zoukankan      html  css  js  c++  java
  • 我的Python之路:浏览器模拟

    一、浏览器模拟——Header属性

       有的时候,我们无法爬取一些网页,也就是说会出现403错误,这是因为这些网页为了防止有人恶意去采集其信息所以进行了一些反爬虫的设置。

      为了可以获取这些数据我们使用一些两种方法:

    1、使用 build opener()

    由于urlopen()不支持HTTP的高级运用所以我们要修改头报。可以使用urllib.request.build_opener进行如下面例子:

       

    #!/uer/bin/env python
    #-*-coding: utf-8 -*-
    import urllib.request  ###导入import urllib.request模块
    
    ur1="http://www.cnblogs.com/alsely/archive/2017/04/19.html"
    headers=("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36")###头报
    file=urllib.request.build_opener()
    file.addheaders=[headers]
    data=file.open(ur1).read()

    print(data)
    fd=open("D:/python爬虫文件目录/kood","wb")
    fd.write(data)
    fd.close()


    这样就可以获取:



    方法二、使用add_header()添加头报
    在这我做简单的介绍:
    1 #!/uer/bin/env python
    2 #-*-coding: utf-8 -*-
    3 import urllib.request  ###导入import urllib.request模块
    4 
    5 rep=urllib.request.Request("http://www.cnblogs.com/alsely/archive/2017/04/19.html")
    6 rep.add_header("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36")
    7 data=urllib.request.urlopen(rep).read()
    8 print(data)
    同样也可运行。
    下面让我们看看具体步骤:
    1、首先设置爬取的网址,然后使用
    rllib.request.Request()创建一个Request()对象
    并且进行赋值给rep。
    2、随后我们就用add_header()方法添加报头信息。
    3、我们使用urlopen()打开
    Request对象即可以打开相应网址,但是在这我们在其后面添加一个read()这样就是打开并读取。


     
  • 相关阅读:
    2101 可达性统计
    POJ1179 Polygon
    POJ1015 Jury Compromise
    读入输出优化
    队列优化dijsktra(SPFA)的玄学优化
    5104 I-country
    CH5102 Mobile Service
    P1005 矩阵取数游戏
    (模板)线段树2
    POJ3666 Making the Grade
  • 原文地址:https://www.cnblogs.com/alsely/p/6759723.html
Copyright © 2011-2022 走看看