import requests
import re
from bs4 import BeautifulSoup
import traceback
def gettext(url):
try:
r=requests.get(url)
r.raise_for_status()
r.encoding=r.apparent_encoding
return r.text
except:
return "wrong"
def getstocklist(lst,stockurl):
html=gettext(stockurl)
soup=BeautifulSoup(html,'html.parser')
a=soup.find_all('a')
for i in a:
try:
href=i.attrs['href']#这个地方有点不明白,好像是在a标签中找到属性href赋给href变量。
lst.append(re.findall(r"[s][hz]\d{6})",href)[0])
except:
continue
def getstockinfo(lst,stockurl,fpath):
for stock in lst:
url=stockurl+int(stock)+".html"
html=gettext(url)
try:
if html=="":
continue
infodict={}
soup=BeautifulSoup(html,'html.parser')
stockinfo=soup.find('div',attrs={'class':'stock-bets'})#find函数返回第一个结果
name=stockinfo.find_all(attrs={'class':'bets-name'})[0]#find_all函数返回所有结果
infodict.update({'股票名称':name.text.split()[0]})#name后面空格的部分不要这个【0】不是最大分割数等于0而是第一项
keylist=stockinfo.find_all('dt')
valuelist=stockinfo.find_all('dd')
for i in range(len(keylist)):
key=keylist[i].text
val=valuelist[i].text
infodict[key]=val#字典的添加方法
with open(fpath,'a',encoding='utf_8')as f:
f.write(str(infodict)+'\n')
except:
traceback.print_exc()
continue
#find_all函数是传入列表
def main():
stock_list_url='http://quote.eastmoney.com/stocklist.html'
stock_info_url='https://gupiao.baidu.com/stock/'
output_file='D:/BaiduStockInfo.txt'
slist=[]
getstocklist(slist,stock_list_url)
getstockinfo(slist,stock_info_url,output_file)
main()
爬取不成功问题在哪现在没找出来,
2018.2.24股票爬虫
最新推荐文章于 2023-09-24 11:29:23 发布