功能描述
目标:获取上交所和深交所所有股票的名称和交易信息
输出:保存到文件中
技术路线:requests bs4 re
候选数据网站的选择
选取原则:股票信息静态存在于HTML页面中,非js代码生成,没有Robots协议限制
选取方法:浏览器F12,源代码查看等
选取心态:不要纠结于某个网站,多找信息源尝试
程序的结构设计
步骤1:从东方财富网获取股票列表(2020年也改存在js了)我们这里选取其他网页(天天基金网)
步骤2:根据股票列表逐个获取个股信息
步骤3:将结果存储到文件
查看网页源码
通过网站我们可以看到,https://fund.eastmoney.com/006003.html,每支股票网址是以https://fund.eastmoney.com/+6位数字+.html构成的
接下来我们查看全部股票的网页源码(https://fund.eastmoney.com/fund.html#os_0;isall_0;ft_;pt_1),可以发现,对应股票的所有信息被div标签包围,每支股票对应的6位数字被tr标签包围,,
那我们就可以通过搜寻div标签下的tr标签下的id所对应的个股编号,但是,这里的个股编号是tr+6位数字,而我们只需要6位数字即可,那我们可以通过下标索gp[1:]这样来得到6位数字。在个股网页中,个股的信息内容对应的class类是merchandiseDetail,个股的名称对应的class类是fundDetail-tit
源代码
import re
import requests
import bs4
from bs4 import BeautifulSoup
import traceback
def getHTMLTEXT(url):
try:
r = requests.get(url,timeout = 30)
r.raise_for_status()
r.encoding = r.apparent_encoding
return r.text
except:
return '爬取网页失败'
def getStockList(list,stock_url):