python爬虫公认的练手项目就是豆瓣top250的图书和电影的抓取,静态页面且源码简单明了,之前也曾对着大神的例子边敲边理解,今番尝试自己动手,检验一下学习成果。
所用的方法不是最简单的,只是自己理解的一种,还有很多问题,写下来留待以后改正。
用时:5小时(呵呵,真有趣)
第一次编辑遇到的问题:
1、作者项抓取包括许多其他信息,未能分开抓取;(split()方法解决)
2、第9页开始简介项数据为空,程序自动停止。(改用css选择器单独抓取解决,css方法更简单,直接遍历所有的div块再取即可)
写在代码前:
用到的模块:requests和BeautifulSoup
requests:实现爬虫的发起请求和获取响应动作。个人不习惯使用内置的urllib3,用起来总是出错。
BeautifulSoup:一个方便的网页解析库,处理高效,支持多种解析器,抓取requests返回的网页html信息。大部分情况下,利用它我们不在需要编写正则表达式就可以方便的实现网页信息的提取。
两个模块的用法简介请参考下面的链接:(讲解很直白,适合需求不高的新手)
requests:https://www.jqhtml.com/13264.html
BeautifulSoup:https://www.jqhtml.com/13272.html
网络爬虫的基本流程:
1、发起请求:
通过HTTP库向目标站点发起请求,即发送一个Request
,请求可以包含额外的headers
等信息,然后等待服务器响应。这个请求的过程就像我们打开浏览器,在浏览器地址栏输入网址:www.baidu.com
,然后点击回车。这个过程其实就相当于浏览器作为一个浏览的客户端,向服务器端发送了 一次请求。
2、获取相应内容:
如果服务器能正常响应,我们会得到一个Response
,Response
的内容便是所要获取的内容,类型可能有HTML
、Json
字符串,二进制数据(图片,视频等)等类型。这个过程就是服务器接收客户端的请求,进过解析发送给浏览器的网页HTML
文件。
3、解析内容:
得到的内容可能是HTML
,可以使用正则表达式,网页解析库进行解析。也可能是Json
,可以直接转为Json
对象解析。可能是二进制数据,可以做保存或者进一步处理。这一步相当于浏览器把服务器端的文件获取到本地,再进行解释并且展现出来。
4、保存数据:
保存的方式可以是把数据存为文本,也可以把数据保存到数据库,或者保存为特定的jpg,mp4 等格式的文件。这就相当于我们在浏览网页时,下载了网页上的图片或者视频。
豆瓣图书top250:https://book.douban.com/top250?start=0