初战告捷,我们继续下一步,来获取网页中的标题和超链接。
观察一下,第一篇文章是这样的:
这篇文章的标题和超链接信息在我们返回的文本中是这样的:
上面的表示是超链接的内容,而下面的则是表示是标题大小为4号字体 ,注意它们的标签。
这个网站比较简单,它的文章标题直接用”<h4>“括起来了,所以直接用”<h4>”就可以搜索到所有标题;但链接就不行,因为<a>出现的地方比较多,不是所有的链接都是我们需要的,所以要另外处理。
从返回的文本中提取内容可以使用正则表达式,需要引入re包,利用findall函数来查找匹配的内容。
先提取这一页所有的文章标题,我们采用非贪婪匹配:
#引入requests包 import requests #设定我们要爬取的内容,全部是企业环境信息披露下的文章,先找到其中第一篇文章 url=‘http://greenfinance.xinhua08.com/qyhjxxpl/’ #发出请求 req=requests.get(url) #解决编码问题,注意get_encodings_from_content的参数是字符串,所以要用req.text而不是req.content req.encoding=requests.utils.get_encodings_from_content(req.text) #查看一下返回的文本 req.text import re #获取文章标题 retitle=re.findall(‘<h4>(.*?)</h4>’,req.text,re.S) retitle
这里<h4>(.*?)</h4>的意思是要提取在这两个标签中的内容,括号可千万别丢了,括号里才是我们要的。
看看是不是拿到了所有的文章标题?
接下来,我们要获取这一页所有文章的超链接。观察一下,超链接都在什么地方?
基本都在红色线标注的包围里,那就好办了。
#引入requests包 import requests #设定我们要爬取的内容,全部是企业环境信息披露下的文章,先找到其中第一篇文章 url=‘http://greenfinance.xinhua08.com/qyhjxxpl/’ #发出请求 req=requests.get(url) #解决编码问题,注意get_encodings_from_content的参数是字符串,所以要用req.text而不是req.content req.encoding=requests.utils.get_encodings_from_content(req.text) #查看一下返回的文本 req.text import re #获取文章标题 retitle=re.findall(‘<h4>(.*?)</h4>’,req.text,re.S) #获取文章链接 rehref=re.findall(‘<div class=”newsinfo”>.*?<a href=”(.*?)”>’,req.text,re.S) rehref
因为在标签<div class=“newsinfo”>和<a href=”之间有空格和换行,所以我们需要加个.*?来排除。
%20再看看结果:
%20
这些超链接好像也都拿到了,第二步圆满结束。下一步是从这些链接中取出对应文章的内容,然后保存起来,请看第(3)篇。
神龙|纯净稳定代理IP免费测试>>>>>>>>天启|企业级代理IP免费测试>>>>>>>>IPIPGO|全球住宅代理IP免费测试