Python爬虫BeautifulSoup案例——获取证监会要闻信息

“风声雨声读书声声声入耳,家事国事天下事事事关心”,我们应该养成看新闻的习惯。接下来我将以证监会要闻为例,展示如何运用Requests库+BeautifulSoup库获取证监会要闻的标题、网址和发布时间等信息,并运用Pandas库将信息存储下来。

网址:

http://www.csrc.gov.cn/pub/newsite/zjhxwfb/xwdd/

image

本文思路

一、分析网页是静态网页还是动态网页,本案例是静态网页

二、研究如何爬取一页的数据——以第一页为例

1、导入相关库

2、采用Request库请求数据

3、采用BeautifulSoup库解析数据

4、采用Pandas库存储数据

三、研究翻页规律,构建循环语句

第一步 分析网页

image

1、谷歌浏览器右键“检查”,点击“Network”,刷新页面。

2、最上面名为“xwdd/”的链接,与证监会要闻地址后缀一致,点击它

3、点击“Response”或者“Preview”,发现我们需要的数据的确在这里。

二、研究如何爬取一页的数据——以第一页为例

1 引入需要的第三方库

import requests
import pandas as pd
from bs4 import BeautifulSoup

2 使用requests库请求数据

我们查看“Headers”发现请求方法为get请求。

image
url='http://www.csrc.gov.cn/pub/newsite/zjhxwfb/xwdd/'
r=requests.get(url)
r.encoding=r.apparent_encoding

3 采用BeautifulSoup库解析数据

image

我们发现,所有证监会要闻信息存储在id='documentContainer'的‘div'标签下的,我们可采用BeautifulSoup提取相关信息。

items=[]#设置空列表存储数据
 soup=BeautifulSoup(r.text,'html.parser')
 li_list=soup.find('div',id='documentContainer').find_all('li')
 for li in li_list:
      title=li.find('a').text#获取要闻标题
      href=li.find('a').get('href')[1:]#获取要闻链接后缀
      child_url='http://www.csrc.gov.cn/pub/newsite/zjhxwfb/xwdd'+href#获取要闻链接
      date=li.find('span').text#获取发布时间
      item=[title,date,child_url]
      items.append(item)

4 采用Pandas库将数据保存至本地

df= pd.DataFrame(items,columns=['标题','发布时间','链接'])df.to_csv('BS爬取证监会要闻第一页.csv')

三、通过循环,爬取所有页面的要闻信息

寻找页面翻页规律

第1页:
http://www.csrc.gov.cn/pub/newsite/zjhxwfb/xwdd/
第2页:
http://www.csrc.gov.cn/pub/newsite/zjhxwfb/xwdd/index_1.html
第3页:
http://www.csrc.gov.cn/pub/newsite/zjhxwfb/xwdd/index_2.html
第{i}页(i>=2):
http://www.csrc.gov.cn/pub/newsite/zjhxwfb/xwdd/index_{i-1}.html
最后一页(第50页)
http://www.csrc.gov.cn/pub/newsite/zjhxwfb/xwdd/index_49.html

设置循环语句

截至2021年10月1日,我们发现网站一共有50页,其中第1页和2-50页不太一样,我们可以这样设置循环语句:

for i in range(1,51):#2021年10月1日证监会要闻有50页
    if i==1:
        url='http://www.csrc.gov.cn/pub/newsite/zjhxwfb/xwdd/'
    else:
        url=f'http://www.csrc.gov.cn/pub/newsite/zjhxwfb/xwdd/index_{i-1}.html'

全套代码如下:

import requests
import pandas as pd
from bs4 import BeautifulSoup
items=[]
for i in range(1,51):#2021年10月1日证监会要闻有50页
    if i==1:
        url='http://www.csrc.gov.cn/pub/newsite/zjhxwfb/xwdd/'
    else:
        url=f'http://www.csrc.gov.cn/pub/newsite/zjhxwfb/xwdd/index_{i-1}.html'
    r=requests.get(url)
    r.encoding=r.apparent_encoding
    soup=BeautifulSoup(r.text,'html.parser')
    li_list=soup.find('div',id='documentContainer').find_all('li')
    for li in li_list:
        title=li.find('a').text
        href=li.find('a').get('href')[1:]
        child_url='http://www.csrc.gov.cn/pub/newsite/zjhxwfb/xwdd'+href
        date=li.find('span').text
        item=[title,date,child_url]
        items.append(item)
df = pd.DataFrame(items,columns=['标题','发布日期','网页链接'])
df.to_csv('BS爬取证监会要闻.csv')

最后我们得到的csv文件如下图所示:

image
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

相关阅读更多精彩内容

友情链接更多精彩内容