静态网页爬虫教程(2)链接和标题的提取

初战告捷,我们继续下一步,来获取网页中的标题和超链接。
观察一下,第一篇文章是这样的:
在这里插入图片描述
这篇文章的标题和超链接信息在我们返回的文本中是这样的:
在这里插入图片描述
上面的表示是超链接的内容,而下面的则是表示是标题大小为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="之间有空格和换行,所以我们需要加个.*?来排除。
再看看结果:
在这里插入图片描述
这些超链接好像也都拿到了,第二步圆满结束。下一步是从这些链接中取出对应文章的内容,然后保存起来,请看第(3)篇。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值