1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 股票数据定向爬取(可运行) Python网络爬虫与信息提取(北京理工大学—嵩天)

股票数据定向爬取(可运行) Python网络爬虫与信息提取(北京理工大学—嵩天)

时间:2023-05-17 09:41:15

相关推荐

股票数据定向爬取(可运行) Python网络爬虫与信息提取(北京理工大学—嵩天)

注意:由于东方财富网与百度股票网站发生变动,所以选择了与原先百度股票类似的股城网作为信息爬取的目标网站。(感谢文章:(4条消息) Python爬虫入门实例八之股票数据定向爬取并保存(优化版)_Mr.Q_LuLu的博客-CSDN博客)

先贴代码:

import requestsfrom bs4 import BeautifulSoupimport tracebackimport redef getHTMLText(url):try:kv = {'user-agent': 'Mozilla/5.0'}#模拟浏览器发送请求r = requests.get(url,headers=kv,timeout = 30)r.raise_for_status()r.encoding = r.apparent_encoding#可将此句改为r.encoding='utf-8'来提高爬取速度return r.textexcept:return ""def getStockList(lst,stockURL):#获得股票号码并存入lst列表中html = getHTMLText(stockURL)soup = BeautifulSoup(html,'html.parser')a = soup.find_all('a')#找到所有的a标签for i in a:try:href = i.attrs['href']#获得href属性的对应值:"/SZ000001/"lst.append(re.findall(r"[S][ZH]\d{6}",href)[0])#findall函数以列表形式返回符合正则表达式的全部子串#[0]可以读出列表中的第一个子串即"SZ000001",并使用append函数将其添加进lst列表中except:continuedef getStockInfo(lst,stockURL,fpath):#使用lst中的股票号码与stockURL组合,得到对应股票信息的URL链接,并将其内容存入fpath指定的路径内count = 0for stock in lst:url = stockURL + stockhtml = getHTMLText(url)try:if html == " ":continueinfoDict = {}#定义字典储存所有股票信息soup = BeautifulSoup(html,'html.parser')stockInfo = soup.find('div',attrs={'class':'stock_top clearfix'})#返回name=div且attrs={'class':'stock_top clearfix'}的Tag对象name = soup.find('h1').string.strip()#找到name=h1的标签并得到它的string部分,跳过空格infoDict.update({'股票名称':name})#update函数对两个字典进行合并,将字典{'股票名称':name}合并进字典infoDict内keyList = stockInfo.find_all('dt')#找到div标签内所有的dt标签,以列表形式返回valueList = stockInfo.find_all('dd')#找到div标签内所有的dd标签,以列表形式返回for i in range(len(keyList)):key = keyList[i].string#获取dt标签的string属性val = valueList[i].string#获取dd标签的string属性infoDict[key] = val #字典可以直接使用infoDict[key] = val,向其中增添内容with open(fpath,'w',encoding = 'utf-8') as f:#以只写形式打开文件(每次运行会清空文件内容) ps:之前以续写形式打开文件,结果每次运行时都要先停掉上一次运行,不方便调试f.write(str(infoDict)+'\n')#每写入字典的一个元素就换一行count = count + 1print('\r当前完成进度:{:.2f}%'.format(count*100/len(lst)),end=" ")#format的应用except:print('\r当前完成进度:{:.2f}%'.format(count * 100 / len(lst)),end=" ")continuedef main():stock_list_rul = '/gpdmylb.html'#获得股票号码的URL链接stock_info_rul = '/'#获取各只股票号码对应股票信息的URL链接的主体部分output_file = 'D://StockInfo.txt'slist = []getStockList(slist,stock_list_rul)#获得股票号码列表getStockInfo(slist,stock_info_rul,output_file)#根据股票号码,取股票信息,并存储在文件中main()

这个程序是我在上课后,收集资料+改写+参考别人代码得到的最终版本,关于代码的解释基本全都放在了注释部分

参考资料:

format函数的作用:(6条消息) format函数用法详解_PT、小小马的博客-CSDN博客_format函数用法

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。