Loading...
墨滴

Wyl

2021/04/16  阅读:62  主题:嫩青

爬虫 | 简简单单爬取东方财富网股票全部资讯

目标

爬取东方财富网上市公司资讯板块全部资讯报道

前言

媒体报道在资本市场中具有信息中介作用和舆论监督作用,获取媒体报道数量和内容,有助于我们分析资本市场热点事件的来龙去脉和相关舆情动态。东方财富网是专业的互联网财经媒体,其汇聚了全方位的综合财经资讯和金融市场资讯。今天我们来介绍了如何爬取东方财富网股吧板块全部资讯内容

最近“小米造车”事件在资本市场和普通网络平台中都引发了热议,以“小米”为例

步骤

第一步,进入东方财富网小米集团页面,点击“港股吧”选项,进入小米股吧频道

小米股吧
小米股吧

第二步,在小米股吧“资讯”频道,翻页观察网址变化

小米资讯
小米资讯

不难发现!!!

第一页资讯网址:http://guba.eastmoney.com/list,hk01810,1,f_1.html

第二页资讯网址:http://guba.eastmoney.com/list,hk01810,1,f_2.html

第n页资讯网址:http://guba.eastmoney.com/list,hk01810,1,f_n.html

其中,http://guba.eastmoney.com/list为固定的部分,hk01810为小米代码,f_1表示资讯页码

通过以上规律,我们可以构造任意上市公司的资讯频道不同页数的url列表

直接上代码

def get_url(code,pages):
    '''
    获取东方财富网股吧链接列表
    code是指公司代码
    page是值爬取页数
    '''

    url_list = []
    for page in range(1,pages+1):
        url = f"http://guba.eastmoney.com/list,{code},1,f_{page}.html"
        url_list.append(url)
        
    return url_list

第三步,解析每一页资讯内容的html规律

显然,每条资讯的阅读、评论、标题、作者、发帖事件都安排在类似class = l1 a1span标签中,通过BeautifulSoupcss选择器即可轻松抓取

资讯列表html规律
资讯列表html规律

代码实现

def get_news(url_list):
    '''
    获取东方财富网新闻列表至本地xls
    url_list是指链接列表
    '''

    headers = {
        'User-Agent': UserAgent(verify_ssl=False).random,
        'cookie': ‘你的cookie’
    }
    
    # 保存爬取内容
    outwb = openpyxl.Workbook() # 打开一个将写的文件
    outws = outwb.create_sheet(index=0# 在将写的文件创建sheet
    outws.cell(row = 1, column = 1, value = "read")
    outws.cell(row = 1, column = 2, value = "comment")
    outws.cell(row = 1, column = 3, value = "title")
    outws.cell(row = 1, column = 4, value = "author")
    outws.cell(row = 1, column = 5, value = "renew")
    outws.cell(row = 1, column = 6, value = "link")
    index = 2
    
    for i in range(len(url_list)):
        url = url_list[i]
        res = requests.get(url,headers = headers)
        res.encoding = res.apparent_encoding
        html = res.text
        soup = BeautifulSoup(html,"html.parser")
        read_list = soup.select(".l1.a1")[1:]
        comment_list = soup.select(".l2.a2")[1:]
        title_list = soup.select(".l3.a3")[1:]
        author_list = soup.select(".l4.a4")[1:]
        renew_list = soup.select(".l5.a5")[1:]
        for k in range(len(title_list)):
            outws.cell(row = index, column = 1, value = str(read_list[k].text.strip()))
            outws.cell(row = index, column = 2, value = str(comment_list[k].text.strip()))
            outws.cell(row = index, column = 3, value = str(title_list[k].select('a')[0]["title"]))
            outws.cell(row = index, column = 4, value = str(author_list[k].text.strip()))
            outws.cell(row = index, column = 5, value = str(renew_list[k].text.strip()))
            outws.cell(row = index, column = 6, value = str(title_list[k].select('a')[0]["href"]))                                                
            index += 1
            print(title_list[k].select('a')[0]["title"],renew_list[k].text.strip())
        sleep(random.uniform(3,4))
            
    outwb.save("东方财富网资讯.xlsx")

第三步:运行主程序

if __name__ == "__main__":
    code = "hk01810"
    pages = 75
    url_list = get_url(code,pages)
    get_news(url_list)
    print("运行完成")

运行结果

运行界面的结果:

运行界面结果
运行界面结果

保存文件的结果:

保存文件结果
保存文件结果

至此,已爬取小米股吧全部资讯,共计获得5788条小米股吧资讯

下回见~

知乎与公号:乌龙PySta(ID:wylcfy2014)
不定期推送:Python+Stata | 文本分析+机器学习 | 财务+会计

Wyl

2021/04/16  阅读:62  主题:嫩青

作者介绍

Wyl

厦门大学