- 学习爬取同花顺行情中心股票信息,分析如下:
1、打开http://http://www.10jqka.com.cn/
2、按F12,选择“Network–>XHR”,进入“行情中心”,网址无变化,表示不是普通的静态html,是动态加载数据。
3、进入第2页、第3、4、5页,连续出现“1/”,应该是我需要的真实网址,点击进一步分析。
4、分析“Request URL: “http://q.10jqka.com.cn/index/index/board/all/field/zdf/order/desc/page/2/ajax/1/”,是GET请求,先打开该网址,发现正是需要的行情数据。
5、进一步分析发现,第1-5页网址中,除了“page/*/”由1至5变化,其他不变,这就是要找的页码了,只要设置页码就能实现翻页:共计188页,拟使用for i in range(1,189),设置page_id = str(i)。
6、打开新网址,查看源代码,股票行情信息处于“ ”标签下,每一个“”就是一支股票信息,“”的文本就是具体的数据:代码、名称、现价、涨跌幅(%)、 涨跌、涨速(%)、换手(%)、量比、振幅(%)、成交额、流通股、流通市值、市盈率。
7、使用XPath语法或bs4可以很方便的提取我需要的数据,就用新学习的bs4:
soup=BeautifulSoup(text, ‘lxml’)
trs = soup.select(‘tbody tr’)
再用循环语句提取里的代码、名称等字段文本信息
8、个股详情链接:经分析,真实网址为”http://d.10jqka.com.cn/v2/realhead/hs_603335/last.js“,其中603335为股票代码,只要替换它就能获取不同股票的数据为json格式(本次只取部分数据,要获取其他数据方法是一样的。
如下是一获取"天华超净"的一部分数据,也可以多增加网址”http://…js"以“.js结尾获取更多数据:
{
5: “300390” 代码
6: “8.20” 昨收
7: “8.23” 今开
8: “9.02” 最高
9: “8.23” 最低
10: “9.02” 现价
12: “1”
13: “22511127.00” 成交量
14: “11645775.00” 外盘
15: “9663852.00” 内盘
17: “30300.00”
19: “198465440.00” 成交额
22: “”
23: “”
24: “9.02” 买一价
25: “7306365.00” 买一量
30: “” 卖一价
31: “0.00” 卖一量
. 37: “-1”
38: “-1”
39: “-1”
49: “2500.00” 现手
51: “”
66: “”
69: “9.02” 涨停
70: “7.38” 跌停
74: “”
75: “”
85: “”
90: “”
92: “”
95: “”
96: “”
127: “”
223: “27520620.00” 大单流入
224: “13492643.00” 大单流出
225: “30066935.00”
226: “13791431.00”
237: “25665770.00” 小单流入
238: “28728570.00” 小单流出
254: “”
259: “32501083.00” 中单流入
260: “26670430.00” 中单流出
271: “-1”
273: “-1”
274: “”
276: “”
277: “”
278: “”
402: “551276000.00”
407: “338655776.00”
2942: “79.189” 市盈率(动)
134152: “79.189” 市盈率(动)
199112: “10.00” 涨幅
264648: “0.820” 上涨金额
395720: “7495865.000” 委差
461256: “100.000” 委比
526792: “9.634” 振幅
527198: “10865352.000”
592920: “5.638” 市净率
1378761: “8.816”
1771976: “2.540”
1968584: “6.647” 换手
2034120: “79.189” 市盈率(动)
3475914: “3054675100.000” 流通市值
3541450: “4972509500.000” 总市值
stop: 0
time: “2020-04-01 11:17:24 北京时间”
name: “天华超净” 股票名称
marketType: “”
stockStatus: “连续竞价”
marketid: “33”
updateTime: “2020-04-01 11:17”
}
- 本次作业拟创建一个类来完成。
完整代码如下:
#!/usr/bin/env python3
# -*- encoding: utf-8 -*-
import requests
import time
import random
import json
from bs4 import BeautifulSoup
import pandas as pd
class Tonghuashun:
"""采集同花顺股票信息作业实例"""
def __init__(self):
self.page_id = ''
self.headers = {
'Host': 'q.10jqka.com.cn',
'Referer': 'http://q.10jqka.com.cn/',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36',
'X-Requested-With': 'XMLHttpRequest'
}
# 定义代理字典
self.proxy = [
{
'http://': '113.194.30.241:9999'},
{
'https://': '113.194.30.241:9999'},
{
'http://': '122.4.50.55:9999'},
{
'http:s//': '122.4.50.55:9999'},
{
'http://': '120.83.97.234:9999'},
{
'http:s//': '120.83.97.234:9999'},
{
'http://': '183.166.102.204:9999'