您的位置:首页 > 编程语言 > Python开发

Python爬虫学习-股票数据定向爬虫(实例)

2019-02-16 17:06 302 查看

股票数据定向爬虫

主要思路:

  1. 选取合适的股票网站进行爬取;
  2. 爬下所有的股票的编号列表;
  3. 过比较不同个股页面的网址来找到其相同点和不同点,进一步分析;
  4. 对所有的个股进行相关信息爬取。

爬虫代码

import re
import requests
from bs4 import BeautifulSoup
import bs4
# 股票代码编号信息获取
def getHTMLText(url1):
try:
kv = {'user-agent': 'Mozilla/4.0'}
r=requests.get(url1,headers=kv)
# 设置浏览器的类型,进行迷惑
r.raise_for_status()
# 事先获得编码,提高爬虫速度
r.encoding='utf-8'
# 避免r.text错误的情况发生
if r.text=='':
getHTMLText(url1)
else:
return r.text
except:
getHTMLText(url1)
# 爬取所有股票的编号列表
def getStockList(demo):
soup = BeautifulSoup(demo, 'html.parser')
a = soup('a')
for i in a:
try:
href= i.attrs['href']
# 通过正则表达式来获得需要的部分
str1=re.findall(r'[s][hz]\d{6}',href)
# 排除不合格的href
if str1!=[]:
fllist.append(re.findall(r'[s][hz]\d{6}',href))
else:
continue
except:
continue
return fllist
# 爬取单个股票的信息
def getStockInfo(demo2,output_file,stock):
infolist = {}
try:
soup = BeautifulSoup(demo2, 'html.parser')
stocklist=soup.find("div",class_="stock-bets")
# 获取股票名称
name=stocklist.find(class_='bets-name')
infolist.update({'股票名称':name.text.split()[0]})
# 获取股票其他信息
for dl in stocklist.descendants:
if isinstance(dl,bs4.element.Tag):
key=dl.find('dt')
value=dl.find('dd')
# 排除当key为空值
if key!=None:
infolist[key.string]=value.string
# 将股票信息放入文件中
with open(output_file,'a',encoding='utf-8') as f:
f.write(str(infolist) + '\n')
except:
# 将爬取出错的股票信息打印放入到no_do列表中
no_do.append(stock)
# 主函数
if __name__ == '__main__':
count=1
no_do=[]
fllist=[]
# 股票列表url
stock_list_url='http://quote.eastmoney.com/stocklist.html'
# 文件存放地址
output_file = 'D://pythontest/testtxt/股票信息.txt'
# 获取到股票列表 fllist
demo=getHTMLText(stock_list_url)
fllist=getStockList(demo)
#对所有的股票进行迭代
for i in range(len(fllist)):
count+=1
# 百度个股信息url
stock_info_url = "https://gupiao.baidu.com/stock/{}.html".format(str(fllist[i])[2:-2])
demo2=getHTMLText(stock_info_url)
# 处理和打印个股信息
getStockInfo(demo2,output_file,fllist[i])
# 打印出进度条
print('\r当前进度:{:.2f}%'.format(count*100 / len(fllist)),end='')
# 打印出异常的信息
print(no_do)

结果显示


爬取完成。
还存在一些缺陷,部分个股信息爬取失败,暂时将爬取失败股票放在no_do中。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: