网页数据抓取怎么写(一下怎么一步一步写爬虫(headers)数据过程(图) )
优采云 发布时间: 2022-03-31 01:22网页数据抓取怎么写(一下怎么一步一步写爬虫(headers)数据过程(图)
)
最近经常有人问我,边看教程边写爬虫很容易,但是一上手就爪子都麻了。. . 所以今天就跟刚开始学爬虫的同学们分享一下如何一步步写爬虫,直到抓到数据为止。
准备工具
首先是工具的准备:python3.6、pycharm、requests库、lxml库和火狐浏览器
这两个库是python的第三方库,需要用pip安装!
Requests用于请求一个网页,获取网页的源码,然后使用lxml库分析html源码,从中取出我们需要的内容!
我使用火狐而不是其他浏览器的原因只是习惯。. .
分析网页
工具准备好之后,我们就可以开始我们的爬虫之旅了!今天我们的目标是捕捉猫眼电影的经典部分,有8万多条数据
打开网页后,第一步是分析网页的源代码,看是静态的还是动态的,还是其他形式。这个网页是静态网页,所以源码中收录了我们需要的内容。
很明显,它的电影名和评分在源码中,但是评分分为2部分,写爬虫的时候要注意!
所以,现在整体思路很清晰了:请求网页==>>获取html源码==>>匹配内容,然后在外面加一步:获取页码==>>构建所有页面的循环,这样你可以把所有内容抓到!让我们在外面写代码。
开始写爬虫
先导入2个库,然后用一行代码得到网页的html,打印出来看看结果
好吧,网站 不允许爬虫运行!我们试试添加headers(headers是*敏*感*词*明,表示请求的网页是浏览器而不是python代码),获取方式也很简单,打开F12开发者工具,找到任何网络请求,然后找到如下图所示的请求Header,复制相关信息,这个Header可以保存,基本上浏览器就是UA,下次直接用就可以了。
请注意,在 Firefox 中,如果标头数据很长,则会被缩写。看到上图中间的省略号了吗……?所以复制的时候一定要先双击展开,复制,再修改上面的代码。看
这一次,html 打印正确!(下面的.text是获取html文本,如果不添加会返回获取是否成功的提示,不是html源码)。
点击开发者工具左上角的选择元素,然后点击页码,对应的源码位置会自动定位到下方,这里我们可以直观的看到最大页码,先拿出来,右键就可以了,然后选择Copy Xpath,然后写在代码里
第9行表示使用lxml中的etree方法解析html,第10行是指从html中找到path对应的tag,因为页码是文本显示和tag的文本部分,所以添加 /text() 来检索文本,最终检索到的内容是列表的形式。那我们在看每个页面的url,还记得刚才页码部分的html吗?
href的值是每个页码对应的url,当然省略了域名部分。可以看出它的规律是offset的值随着页码的变化而变化(*30)那么,我们就可以建立一个循环了!
第10行使用[0]取出列表中的pn值,然后构建一个循环,然后获取新url的html(pn_url),然后去html匹配我们想要的!为方便起见,添加一个break,它只会循环一次
然后开始匹配,这次我们只取出电影名、评分和详情url 3个结果
可以看到我们要的内容在dd标签下面,下面有3个div,第一个是图片,不用管,第二个是电影名,详情页url是同样在里面,第三个div有评分结果,所以我们可以写
第 14 行仍在解析 html。第15、16行分别获取类属性为“channel-detail movie-item-title”的div标签下的title值和该div下a标签的href值(此处不复制)。xpath路径,当然如果可以的话,也推荐你使用这种方式,因为如果使用路径的话,如果修改了网页的结构,那么我们的代码就会被重写……)
第17、18、2行代码得到了div标签下的所有文本内容,还记得那个分数吗?不是一个标签下,而是2个标签下的文字内容合并,这样搞定!
然后,使用zip函数将内容一一写入txt文件
注意内容间距和换行符!
至此,爬虫部分基本完成!先来看看效果吧,时间有限,只抢前5页,代码和结果如下:
后记
整个爬取过程没有难度。首先需要注意头信息(headers)。后面在抓取数据的过程中,需要学习和使用匹配的方法。最后,注意数据量。数量,不要对网站造成不良影响,这是基本要求!后面有这个网站,大约100页后,需要登录,注意这个,可以自己试试!