Python爬虫初学(4)

在爬虫的时候,遇到403禁止爬取错误时候的做法:

1、一个网站下面的robots.txt,上面记录了很多禁止爬虫的信息

Urllib2:一个有更多功能的爬虫模块

在浏览器中利用审查元素这个功能,刷新查看network标签内的内容。查看每个网页在网络上的状态,status部分是也就是每个网页的状态码部分,就是getcode()得到的那个数值。

其中选择某个状态码为200的这个网页,里面的headers信息中的headers response会为你提供一些服务器的头部信息,也就是用info方法获得的那些信息。 由于一些网站会屏蔽掉我们的爬虫程序,那么我们就用模拟用户行为的方式来进行爬取数据。


其中req = urllib2.Request(url)这个方法会创建一个对象并且会获得headers标签中request headers的一些信息,这些信息也就用户申请访问这个页面的一些信息。如访问页面的服务器地址,用户的一些硬件信息,以及通过哪些之前的页面也访问到当前这个页面的信息。


request返回的这个对象有一个add_header方法。

req.add_header('"","")


  
  
  1. Request URL:
    http://blog.csdn.net/sxb0841901116/article/details/23305801
  2. Request Method:
    GET
  3. Status Code:
    200 OK
  4. Request Headersview source
    1. Accept:
      text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
    2. Accept-Encoding:
      gzip,deflate,sdch
    3. Accept-Language:
      zh-CN,zh;q=0.8
    4. Cache-Control:
      max-age=0
    5. Connection:
      keep-alive
    6. Cookie:
      uuid_tt_dd=-7514325896085549506_20140328; bdshare_firstime=1395975487708; __gads=ID=67ba309779368bb7:T=1396014516:S=ALNI_Mb65x2Wo19zxI4dolCsJT3ZxBgMUw; lzstat_uv=20668270932687103978|2955225; CloudSiteTheme=Default; CloudGuest=Q/26rJhRxgVBdK86B7bhjJs74GajISRoJhW4uOXM5dxyb18V1goLQAla2v8nTchg1rOz5XFIaB6cqf+0KWjq8EV+c2Sr/G77BZ74uhwyR6SrrtMkWnpIpFOUsgdSVr/IyJQhuouLZ9mlbFMvdJu0A1m2dav+lJex1dxxHYFEB9FRt7ALVYxi/jxLcZzSjQ6j; __message_district_code=430000; __message_sys_msg_id=2380; uuid=085e46c1-401f-4a53-ac80-32704d4cd9ce; UserName=u010092734; UserInfo=osohlmEWRTOpQ8WBoL1sQoz6rMabsFQM4sDSaAiyl%2bEo4HvgkXfVUjbRgsl%2fI0PvcnqYMDEEnizONqEV43ksE5a0CjTwRpN%2fLoKlvx%2fbmGSSf2S4KwG9fJPJYC4J5gG3; UN=u010092734; UserNick=R__phoenix; access-token=56b1ba5a-2940-46ac-93f2-a4a71cbce1cd; AU=5A0; UD=ACMer; avh=23662805%2c23305801; __utma=17226283.1123425646.1397090952.1397482404.1397521290.45; __utmb=17226283.12.10.1397521290; __utmc=17226283; __utmz=17226283.1397482404.44.11.utmcsr=baidu|utmccn=(organic)|utmcmd=organic|utmctr=%E7%81%B0%E5%B8%BD%E5%AD%90Python%20pdf; dc_tos=n41qng; dc_session_id=wsg4p|12; __message_gu_msg_id=0; __message_cnel_msg_id=0; __message_in_school=0
    7. Host:
      blog.csdn.net
    8. Referer:
      http://blog.csdn.net/hot.html
    9. User-Agent:
      Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36
  5. Response Headersview source

    这里是某一个页面的Request header里面的信息,我们要用add_header这个方法把GET,HOST,Referer以及user-agent这四个标签所对应的值都添加到request返回的那个对象里面,以元组参数的方式,之后用urlopen的方法打开request返回的对象,并且read读取,就可以模仿用户的行为去爬取网页上面的数据。

    在给add_headers传递参数的时候,因为一共有四个标签的键值对要传入,一行一行的重复代码显得过于啰嗦,我们可以直接把上面的四个键值对做成一个字典,之后在创建Request对象的时候把这个字典当做参数穿给Request函数参数列表中的headers参数即可。这样的话就可以不用add_headers方法了。



    如果要重复多次的访问一个页面的话,那么就要user-agent有多个信息,用多个虚假的头部信息可以多次访问一个网站。




    • 0
      点赞
    • 2
      收藏
      觉得还不错? 一键收藏
    • 0
      评论
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值