本文主要内容:爬取中国日报地方新闻,制作索引excel文件,将具体新闻内容保存为docx文件
-
第一部分、制作新闻excel索引
-
1.观察网页
-
2.导入相关库
-
3.请求网页
-
4.解析数据
-
5.爬取多页数据
- 如果你不会for循环(ಥ﹏ಥ)
- 使用for循环爬取(*▽*)
-
6.保存为excel文件
-
第二部分、将新闻内容保存为word
-
1.导入相关库
-
2.请求数据
-
3.解析数据并保存为word
-
4.批量保存新闻正文
第一部分、制作新闻excel索引
1.观察网页
打开中国日报网,进入首页,找到”资讯“,点击”地方频道“,进入地方频道后点击”要闻“,即为目标网页。接着,我们进行翻页,观察不同页面下的网址变化。通过对比第1,2…以及最后一页的网址,发现他们之间存在着差异,所以判断该网站为静态网站。且根据观察,除第一页网址为“https://cn.chinadaily.com.cn/5b753f9fa310030f813cf408/5bd549f1a3101a87ca8ff5e2”不同页面下的网址为“https://cnews.chinadaily.com.cn/5bd5693aa3101a87ca8ff676/page_{i}.html”,i为页码,在后续的数据爬取中,可以采用for循环来对不同页面数据进行爬取。
2.导入相关库
from bs4 import BeautifulSoup import requests import pandas as pd
3.请求网页
用requests库请求数据,首先单击鼠标右键,选择“检查”,找到“网络”,点击。
随后,CTRL+r刷新界面,找到“标头”(headers),发现该网页的请求方法为get,可通过request库请求。
尝试请求数据,以第一页为例,代码如下:
url='https://cn.chinadaily.com.cn/5b753f9fa310030f813cf408/5bd549f1a3101a87ca8ff5e2/page_1.html' headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36 Edg/118.0.2088.61' } response=requests.get(url=url,headers=headers) print(response.status_code) response.encoding=response.apparent_encoding#encoding防止乱码
print(r)
运行结果为200,表示请求成功
4.解析数据
检查页面,在检查页面查找需要爬取的内容,发现所有新闻都存在于div标签下的class_=‘left-liebiao’
每条新闻的发布时间位于div标签下的’p’标签下的’b’标签内
而每条新闻的标题都对应’div’,class_=‘left-liebiao’标签下’h3’标签下的’a’标签的文本,且在’h3’中,不同新闻的子链接位于’a’标签中的’h