【Python爬虫】股票信息定向爬取
项目思路
目标:获取上交所和深交所所有股票的名称和交易信息
输出:保存到文件中
技术路线:requests-bs4-re
候选网站:
新浪股票、百度股票、腾讯股票
选取原则:股票信息静态存在于html页面中,非js代码生成,没有robots协议限制
检查方法:F12、源代码查看等
注意:若候选网站不行,多选取几个网站尝试
检查结果:新浪财经和百度财经的股票信息均为网站js代码生成,不适合requests-bs4-re爬取;腾讯财经中股票信息静态存在于html中,且robots协议(https://gu.qq.com/robots.txt)显示:User-agent: * Allow: / ,允许所有爬虫获取信息,因此腾讯财经作为目标网站
获取股票列表:
东方财富网:https://quote.eastmoney.com/center/gridlist.html#hs_a_board
(由于该网站已经修改为js动态加载,无法获取所有股票数据)
凤凰网财经:https://app.finance.ifeng.com/list/stock.php?t=hs
(该网站股票及交易信息直接写在网页代码中,共102页)
获取股票信息:
目标网站:https://stockapp.finance.qq.com/mstats/
个股网站:https://gu.qq.com/sh600011/gp
程序设计:
1 从凤凰网财经获取股票列表
2 根据股票列表依次从腾讯财经获取个股信息
3 将结果保存在文件中
本文仅进行技术探讨,请遵守网络规则
import requests
import re
from bs4 import BeautifulSoup
def getHTMLtext(url, code = "utf-8"):
"""
定义获取页面函数
:param url: 爬取的链接
:return: r.text
"""
try:
r = requests.get(url)
r.raise_for_status()
r.encoding = code
return r.text
except:
return ""
print("")
def getslist(slist, url):
"""
从东方财富网获得股票列表
:param slit: 股票列表
:param html: 网页信息
:return:
"""
# 获取网页页面
print("开始获取股票列表")
# 凤凰网财经的股票列表有102页,因此需要循环爬取
for pagenum in range(1,