1.简述:正则表达式是爬虫的方法之一,这里利用Requests库进行爬取,尽管Urllib也能进行爬取,但过程过于繁琐,在了解Urllib的爬取过程后,没有进行实战演练,但在学习了Requests的爬取后,进行了实战学习,因为考虑到确实之后会多用到Requests包,所以这一步还是要好好掌握学习一下的:)另外,还用到re包,主要在利用正则表达式进行爬虫是时用到匹配(re.match)、查找(re.findall)等方法。
2.环境:这次我进行爬虫用的是Jupyter而不再是DOS命令窗口了。Jupyter是Anaconda编译环境的一个交互式笔记本,用起来非常便捷。接下来简单记录一下我的爬取过程。
3.过程:
一),明确爬取内容,这次练习要爬取的内容是豆瓣读书(https://book.douban.com/)的‘新书速递’内容中所列出来的近期新书,主要爬取:1.书名,2.作者和3.对应图书的豆瓣链接。要爬取网页的界面截图如下:
我爬取的是新书速递的四十本推荐图书:
二)、利用包:
requests,re
三)、代码:
import requests
import re
i=0//统计爬取条目,这里应该要爬到40条图书信息
content=requests.get('https://book.douban.com/').text
pattern=re.compile('<li.*?cover.*?href="(.*?)title="(.*?)">.*?more-meta.*?author">(.*?)</span>.*?year">(.*?)</span>.*?</li>',re.S)
results=re.findall(pattern,content)
for result in results:
print('书名:'+result[1]+'\n作者:'+result[2].strip()+'\n图书链接:'+result[0])
i+=1
print('in all:',i)
四)、爬取结果:
五)、验证:
数一下豆瓣读书页面上的数目,一共有40条,这里用i进行统计,并输出统计结果,结果显示为40,则表示爬取信息没有遗失。执行截图如下:
六)总结:
1.正则表达式不难,主要是掌握它写的方式就好,但它的写法也是爬取的关键所在。
2.这个网址www.oschina.com很牛p,功能很多,其中正则表达式提取模块,可以直接得到想要到的正则表达式功能,但不会写的正则表达式,以后有些不会写的可以直接去上这个网站。