您的位置:首页 > 新闻资讯 >文章内容
新手学习爬虫要注意哪些事项
来源:互联网 作者:admin 时间:2019-02-09 09:41:00

  爬虫虽然比较简单,但不同需求,所要使用的爬虫不同,对于一些难度大的项目,也是要用一些作用更高的爬虫,因为需要突破网站的各种限制,这样才能更好的完成采集任务。


  1、理解HTTP请求


  HTTP请求是基于TCP/IP协议的应用层协议,请求方法常用的有GET、HEAD、POST。默认的请求方式为GET。所以一开始我们接触爬虫的时候会写上一段这样子的代码:


  import requests


  resp = requests.get('http://www.baidu.com')


  其中就是使用了HTTP的GET请求。


  这样一个小小的请求在这里之所以看似简单,是因为在requests库的背后已经将很多细节都帮封装好了。


  GET用于信息获取,GET请求报文示例:


新手学习爬虫要注意哪些事项


  可以看到第一行已经包括了请求方法,请求路径,协议的版本。


  而其他行如Host、User-Agent、Connection等则表示请求时的一些条件:


  Host 表示请求的域名


  User-Agent 表示你所用的浏览器(这个在写爬虫时就可以伪造一番了)


  Connection 表示要保持连接状态,及TCP/IP协议的连接状态


  还有其他请求条件如Cookie,Referer等等这里不再一一列举,读者可自行百度。


  不仅有GET请求,还有POST也很常用到。


  POST请求一般用于提交数据较多,需要较强安全性的数据。使用场景一般是登陆,上传文件之类的操作。


  POST请求的请求头和GET类似的,唯一比较不一样的是数据提交方式,比如登陆时要提交邮箱和密码:


  GET请求的数据会附在URL之后,以?分割URL和传输数据,多个参数用&连接;例如:/login.php?email=123@qq.com&password=123


  POST请求把提交的数据放置在是HTTP包的包体中。邮箱和密码就是实际的传输数据被封装在请求体中,因此,GET提交的数据会在地址栏中显示出来,而POST提交,地址栏不会改变。


  使用POST的代码可以如下:


新手学习爬虫要注意哪些事项


  这样就把邮箱密码提交上去了。


  除了请求头,还有HTTP的响应头,响应头会包含一些服务器的时间,类型,还有相应内容的长度等等。主要被用到的还是响应头中的状态码。状态码有以下几种类型:


  2xx:成功--表示请求已被成功接收、理解、接受


  3xx:重定向--要完成请求必须进行更进一步的操作


  4xx:客户端错误--请求有语法错误或请求无法实现


  5xx:服务器端错误--服务器未能实现合法的请求


  常见状态代码、状态描述、说明:


新手学习爬虫要注意哪些事项


  这个状态码我们写程序的时候可以怎么利用呢?


新手学习爬虫要注意哪些事项


  这个状态码可以判断我们在程序的请求是否正常响应,方便程序排除错误。还有更多的响应信息,越是了解对写爬虫越是方便快捷。


  2、浏览器上所看见的页面基本上都是由js脚本处理过的数据,与程序所得到的数据有所偏差。


  在谷歌浏览器中,右键有个检查选项可以定位查看到当前的html代码,很多人认为这也是我们程序中看到的html代码。


  这也就导致了一些新手朋友在学习时常常碰壁,以为是自己的selector写错,其实主要原因还在于标题所述的那样,你所看到的代码一个被js处理过,另一个是服务器最初响应给我们的数据。


  所以,如果想查看网页的最初的响应数据,可以右键查看源代码,这个源代码也是没有被js加工处理过的,这时就可以利用这个源代码进行调试写selector了。


  3、如何巧用谷歌浏览器的开发者工具进行调试。


  谷歌的开发者工具不仅是适用开发人员,而且对我们写爬虫也非常有益处。


  按F12可以快速打开开发者工具,可以看到有Elements、Console、Sources、Network等等。


  其中Elements里面就是js加工处理过的代码,我们可以利用它来查找我们所要的标签中是否有价值的class或者id,如果有的话可以很快写出selector。


  Sources里存着网页中如js,css大大小小的文件等等。


  Network在抓取异步请求的数据时非常好用,Network中会包含很多异步请求,一般我们在刚打开的时候是空的,这时刷新一下就会看到很多请求,里面还可以看到请求头、响应头等的信息,非常方便。


相关文章内容简介
推荐阅读
  • 13 2019-06
    数据采集离不开代理ip的支持

    数据采集离不开代理ip的支持,因为现在数据产生比较快,我们需要分析一件事情,可能需要分析很多的信息才能挖机到有价值的资料。而要用大量的信息,并不是任你使用的,这需要去一些平

  • 04 2019-07
    动态ip代理对我们有什么帮助

    动态ip代理对我们有什么帮助?提到动态ip代理,只要你平常有关注互联网的话大家都不会陌生,因为我们在网上进行浏览的时候,都是会有具体的ip地址,但是有些人会不希望自己的ip地址被显

  • 25 2019-03
    爬虫程序中调用动态ip代理的方法

    动态ip代理对于爬虫程序来说,是非常重要的组成部分,如果仅仅是编写爬虫程序,不做抓取使用,这没有加入动态ip代理也没有什么,但如果要让爬虫程序直接去爬取数据,这是不能够的。

  • 24 2019-05
    搭建http的透明正向代理

    搭建http的透明正向代理,有知道如何搭建吗?透明和正向代理是指什么?在搭建http的透明正向代理过程中需要注意些什么事项呢?机灵代理小编跟大家一起去看看如果搭建问题。

  • 26 2020-02
    怎么批量测试代理ip的可用性

    对于使用少量的代理IP,测试可以选择QQ测试的方法,但是大批量的代理IP测试再使用QQ测试就有些费时费力了,批量代理IP测试可以使用下面的方法。

  • 11 2019-10
    代理IP添加API为什么要验证 这么麻烦?

    为什么使用代理IP的时候需要经过验证这么一个步骤?我不是已经付过费成为用户了吗?为什么不让我直接就用,还得要经过验证后才能够正常使用?下面机灵代理为大家进行解答。

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

大客户经理微信

微信公众号

微信公众号

回到顶部