您的位置:首页 > 新闻资讯 >文章内容
爬虫爬取动态网页需要http代理吗
来源:互联网 作者:admin 时间:2019-05-23 10:21:30

爬虫爬取动态网页需要http代理吗?在如今人们对网页加载速度的要求越来越高的要求下,异步加载成为了许多大的站点的首选。比如各大电商平台、知识型网站、社交平台等,都广泛采用了异步加载的动态技术。简单来说,就是把一些根据时间、请求而变化的内容,比如某宝的商品价格、评论,比如某瓣的热门电影评论,再比如某讯的视频等,采用先加载网页整体框架,后加载动态内容的方式呈现。

对于这一类动态页面,如果我们采用前面所说的对付静态网页的爬虫方式去爬,可能收获不到任何结果,因为这些异步加载的内容所在的位置大多是一段请求内容的JS代码。在某些触发操作下,这些JS代码开始工作,从数据库中提取对应的数据,将其放置到网页框架中相对应的位置,从而最终拼接成我们所能看到的完整的一张页面。

有时候比较烦的是,我们使用爬虫来工作,某些情况下IP受限制,这造成了很大的麻烦,对于“爬虫爬取动态网页需要http代理吗”这个问题,其实不管爬虫是爬取什么页面也还是需要使用http代理的,可以提供多个可以选择的IP,以此来解决问题的。

对于动态网页,爬虫的爬取方法是不一样的,今天机灵代理带大家去看看爬虫技术一之API请求法:

看似更加复杂的操作似乎给我们的爬虫带来了很大的困扰,但其实也可能给我们带来极大的便利。我们只需要找到JS请求的API,并按照一定的要求发送带有有效参数的请求,便能获得最为整洁的数据,而不用像以前那样从层层嵌套的HTML代码中慢慢解析出我们想要的数据。

这里我们以上面提到的豆瓣电影为例做一个分析,提取出热度排名前100的电影名称和评分以及在豆瓣的地址。

爬虫爬取动态网页需要http代理吗


       这是最近热门电影按热度排序的一个截图,每个月都有不同的新电影上映,每部电影会随着口碑效应每天呈现不同的热度排序,如果这页面是个静态网页,那么豆瓣的程序员岂不是很辛苦,每天都要上线修改这个页面。所以,我们可以大胆的猜测,这是个动态页面。但是光猜不行,我们还得证实。这里就要用到第二讲讲到的谷歌开发者工具了。按下F12或者在网页空白处右键选择检查(N),或者在键盘上按下组合键Ctrl + Shift + I,召唤出我们的神器。如下图所示:

爬虫爬取动态网页需要http代理吗


       今天我们不再使用左上角的鼠标按钮了,而是使用红色框中的Network,这里显示的是网页加载出来的所有的文件,如下图所示:

爬虫爬取动态网页需要http代理吗


       如果下方没有任何结果,需要在打开谷歌开发者工具的情况下刷新网页。

爬虫爬取动态网页需要http代理吗


       如上图所示,我们点击上方红色小框中的”XHR“按钮,就可以将这张网页中异步加载的内容筛选出来。至于到底哪一个才是我们所要的,这是个问题,看左边的地址我们似乎也看不出神马头绪,那就一个一个点出来看吧。。。经过枚举,我们发现,第三个是我们要的内容,它的内容如下图:

爬虫爬取动态网页需要http代理吗


       我们可以看到,这个链接里包含的内容是以JSON格式展示出来的,这时我们便有了一个大概的思路,那就是将这个链接的内容用requests模块下载后,再用Python的json模块进行解析。

       但是,这好像是一页的内容,数一数也只有20部电影,我们想要的是排名前100的电影,这怎么办呢?

       不方,毕竟是动态网页,内容都是可以根据请求改变的,而且这里也没有登陆啥的操作,打开网页就能看到,那我们是不是可以改变一下URL从而获取到下一页甚至下下页的内容咧?当然可以,不然我就写不下去了!

       我们仔细观察一下这个URL里传递的参数:

爬虫爬取动态网页需要http代理吗


       到这里我们可能还不知道这五个参数是干嘛的,但我们可以找规律啊,于是现在回到原始的网页,点击页面下方的“加载更多”,再返回到开发者工具,哇,多出了一个URL,长的跟刚才说的那个好像,内容也长的好像:

爬虫爬取动态网页需要http代理吗


       这个URL同样传递了五个参数:

爬虫爬取动态网页需要http代理吗


       唯一的不同就是一个叫“page_start”的关键字的值改变了,简单翻译一下大概是页面起点的意思,再看上面的“page_limit”,大概就是页面限制的意思,看右边的响应内容,这一个页面传递了20个条目,也就是说“page_limit”是一个页面里条目数量的限制,也就是20条,这个数据是不变的,而“page_start”是这一页开始的条目序号,那么我们要获取后面的内容,岂不是只要改变一下这个“page_start”就好了?是的。

老规矩,先写个代码压压惊

爬虫爬取动态网页需要http代理吗

       注释1:因为一页有20条数据,我们要爬取100条,而page_start的起始数据是0,因此我们这里只需要用一个i,从0到4循环5次,每一次乘以20便可以轻松的设置page_start的值了,因为后面的URL是个字符串类型,这里进行乘法运算后我们用str()方法进行类型转换,转换成str类型,方便后面的调用。

       注释2:这里我们每一次循环只要改变page_start的值就好了,所以在最后修改这个值;

       注释3:返回的content经过decode()方法解码,变成了一个字符串类型,根据我们前面的分析,得出这是一个JSON格式的字符串,因此,我们用Python内置的标准库json来进行解析,标准库就不需要用pip工具进行安装了。json模块有两个主要方法———json.loads()和json.dumps(),前一个是用来解码JSON数据的,后一个则是编码成JSON数据的。这里我们主要用到loads()方法,将content解析成一个字典格式的内容,存储在名为content_list的对象里,最后加上“[‘subjects’]”是用来解析出我们要的最简洁的部分,这个根据具体的内容来定,不是所有的解析都要这么写。比如这里,如下图:

爬虫爬取动态网页需要http代理吗


我们要的内容最外面有这么一个嵌套,这个嵌套的Key为”subjects”,这个Key的值为一个数组,这个数组才是我们要的,因此加上了“[‘subjects’]”。

       注释4:content_list是一个数组对象,因此我们也做一个循环,分条提取。

       注释5:每一条数据依然是个字典类型的对象,因此我们可以直接写对应的Key名得到想要的值,这里得到的电影的名称;

       注释6:同5,这里得到的是电影的评分;

       注释7:同5,这里得到的是电影的豆瓣链接;

       最后的话,大家可以采用标准输入流写入txt文件,也可以采用xlwt模块写入EXCEL,还可以使用比如pymysql模块写入Mysql数据库,具体的方式大家随意,使用方法请自行百度。

       爬虫爬取动态网页需要http代理,同样也是需要技术去爬取的,这种采用寻找API并传递有效参数重放API的方法便为大家介绍完了,这是个很通用的方法,在很多网站都可以这样使用,并且速度很快,结果最精简。


相关文章内容简介
推荐阅读
  • 22 2019-11
    Python怎么获取网页源码?

    Python跟代理IP是一组梦幻的搭配,很多网络工作者都非常喜欢。今天我们来聊聊Python怎么获取网页的源码?下面看看机灵代理带来的教程。

  • 12 2019-09
    用代理IP爬虫前 你必须懂的33个知识点(三)

    爬虫为什么要用代理IP?又是什么让爬虫变得常态化?如果你也在思考这些问题,那么机灵代理搜集了33个相关知识点就非常适合你了,如果你想要了解爬虫以及大数据的相关知识,用代理IP开展爬

  • 26 2019-03
    免费服务器代理在使用过程中的状态如何?

    现如今服务器在发展过程中越来越受到大家的关注,有很多服务器代理商为了扩展自己的业务,都会推出免费服务器代理,让客户提前是要根据个人的实际需要试用之后,再次选择是否购买。那

  • 28 2019-08
    手机也能用动态IP代理吗?

    电脑换IP我们比较常使用,那么如果你的手机需要进行IP地址切换,你知道有什么方法可以实现吗?其实原理跟PC端是一致的,只要通过代理IP软件就可以很方便使用,下面我们来看看具体是怎样操

  • 25 2019-04
    代理IP存放于txt中使用方法

    代理IP存放于txt中使用方法是怎样的?如果我们是使用网络哪些网站提供的IP资源,必定是有很多不能使用的,需要先把可用的IP分离出来,之后存放在txt中,再进行调用的,那么如何使用的呢?

  • 19 2020-06
    如何维护上网安全

    当今互联网什么愈发重要?是速度?或是技术?实际上愈发重要的一点,确实时常被各位所忽视的,应该是每一个用户的隐私安全。不知各位是否感觉如果你刷新浪微博、逛天猫商城、看头条时,连

在线咨询
大客户经理
大客户经理
1829380381
13316264505

大客户经理微信

微信公众号

微信公众号

回到顶部