2018.2.24股票爬虫

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()
爬取不成功问题在哪现在没找出来,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值