python爬虫(二)—解析内容(1)
python爬虫(二)——解析内容(1)
至于为什么说是(1)呢,因为之后可能会有(2)哈哈哈哈。
好的,话不多说。
在上一节中,我们已经将整个页面的内容全部捕获了出来,但是整个页面并使我们想要的,我们需要的可能只是那一行代码。这时候,从如此多的网页源代码中提取出内一行的话,有很多种办法,今天介绍用正则表达式提取的这一种(应该算得上最简单的一种吧)
开始!!!
准备工作
import requests
import re
headers = {
'User-Agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Mobile Safari/537.36'
}
reponses = requests.get('https://www.doutula.com/article/detail/1472031',headers = headers)
html = reponses.text
#print(html)
#print(reponses.status_code)
这是我们上一节课学到的东西,也就是整个页面的内容,今天,我们来爬取表情包,链接就在上面的代码里。
开始爬
在网站里查看网页源代码,分析网站会发现,所有的图片都有自己对应的一个url,里面存放着自己的一张高清图
就像第一张是这个亚子,点进去就会发现那是一张高清图
然后捏,该怎么做
urls = re.findall('<img referrerpolicy="no-referrer" data-cfsrc="(.*?)" alt=".*?" οnerrοr=".*?" style=".*?">',html)
print(urls)
用到了正则表达式,是需要import re
的,至于正则表达式的用法呢,如果介绍的话比较多而且麻烦,百度自取,这里就不多做解释。
你细品,你看,刚刚这串代码是
<img referrerpolicy="no-referrer" src="http://ww2.sinaimg.cn/large/9150e4e5gy1gcnc9v7skgj205t05ta9w.jpg" alt="可恶" onerror="this.src='http://img.doutula.com/production/uploads/image/2020/03/09/20200309709312_TijAwO.jpg'">
我们把他里面没用的东西都用.*?
代替了,也就是这里是什么都可以,但是仔细看一下 data-cfsrc="(.*?)"
这个位置,它的.*?
是加了括号的,也就是说,这里面的内容是你要提取的
上面内两行代码执行的结果是这个样子:
也就是这些表情包所在的网址,这样,我们就做到了提取出了你所需要的表情包的网址,接下来就是需要保存这些信息了,下节课再写,不急,慢慢来 (我有课!以后再更!)