目录
1.概述
人民网(People's Daily Online),创办于1997年1月1日,是世界十大报纸之一《人民日报》建设的以新闻为主的大型网上信息交互平台,也是国际互联网上最大的综合性网络媒体之一。本文爬取人民网滚动新闻中经济科技模块,页面首页如图表 1‑1 所示,网址如下:滚动--经济·科技--人民网
该页面是以新闻列表形式排列,网页末尾有页码,点击不同的页码url中的index序号发生变化。每一条新闻都是以超链接形式存在,点击可以跳转到子页面,子页面展示:
2.思路
本文在遵守Robots友好爬虫协议的前提下,在原始新闻列表页面向Web服务器发送携带cookies的请求,提取出子页面超链接,并存储成URL列表。遍历列表,通过selenium模拟浏览器技术,获得每一个子页面的网页内容,而后使用正则表达式、BeautifulSoup库的css选择器,find,findall,select等查找提取元素方法,获取子页面的新闻标题,新闻时间,报道来源,内容,责任编辑,如果页面存在图片或视频元素,提取其超链接后再次发送请求,下载网页内嵌多媒体。
3.爬虫
3.1 主页面提取新闻链接列表
因为该网站进行页面翻页需要登录才可完成,所以需要利用cookies的状态保持技术。登录过后利用浏览器抓包工具提取cookie,保存成文本文件方便后续调用。向web服务器发送请求,参数放入url,headers浏览器标识和cookies。由于HTML文本的编码方式是gb2312,所以也选择该编码显示返回的文本文件。
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36 Edg/96.0.1054.29'}
domain="http://finance.people.com.cn/"#所有子超链接的根目录
url_0="http://www.people.com.cn/"#网站根目录,其下可以查看Robots协议
#读入cookies文本文件,改写成requests可以识别的格式
f_cookie=open(r'C:\Users\mzjj\Desktop\cookies.txt','r',encoding='utf8')
cookies={}
for line in f_cookie.read().split(';'):
name,value=line.strip().split('=',1)
cookies[name]=value
f_cookie.close()
r=requests.get(url=url,headers=headers,cookies=cookies)
r.encoding='gb2312'
html=r.text
随后利用BeautifulSoup进行文档页面的解析。通过抓包工具可以发现列表主体存放于<div class=”ej_list_box clear”>标签下,每个<ul>标签下是一个列表块,每个<li>标签下是每一条新闻