针对反爬虫网址,伪装成浏览器

urllib.error.HTTPError: HTTP Error 403: Forbidden处理

有些服务器拒绝非浏览器查看,比如爬虫,因此,在用程序爬取服务器信息时,需要伪装成浏览器,就是改一下headers参数.-->在请求中添加UserAgent的信息

1、为什么要设置headers? 

在请求网页爬取的时候,输出的text信息中会出现抱歉,无法访问等字眼,这就是禁止爬取,需要通过反爬机制去解决这个问题。headers是解决requests请求反爬的方法之一,相当于我们进去这个网页的服务器本身,假装自己本身在爬取数据。 

服务器根据User-Agent判断是爬虫还是浏览器

2、 headers在哪里找? 

谷歌或者火狐浏览器,在网页面上点击右键,–>检查–>剩余按照图中显示操作,需要按Fn+F5刷新出网页来 

3、headers中有很多内容,主要常用的就是user-agent (用户代理)和 host(域名),他们是以键对的形式展现出来,

  如果user-agent 以字典键对形式作为headers的内容,就可以反爬成功,就不需要其他键对;否则,需要加入headers下的更多键对形式。

4.另外

user-Agent的获取途径还有

     针对chrome:

      可以在地址栏输入:about:version   回车即可找到userAgent信息

     针对其他浏览器:

      在地址栏中输入:javascript:alert(navigator.userAgent)   回车即可找到userAgent信息

实例

import requests                  # --》requests模块得自己用pip安装,是第三方模块
res=requests.get("http://www.dianping.com/",headers=headers)
print(res.text)
#输出会出现:抱歉!页面无法访问....这就是限制爬虫了

#解决方法:加入headers,在requests.get(headers=headers)里面,添加headers #构建headers import requests headers={ "Host": "www.dianping.com" "User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.146 Safari/537.36" } res=requests.get("http://www.dianping.com/",headers=headers) print(res.text)
import urllib.request        # --》导入urllib包中的request模块
headers={
"Host": "fishc.com.cn","User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.106 Safari/537.36"
}

req = urllib.request.Request(url="http://fishc.com.cn",headers=headers)
res = urllib.request.urlopen(req)
print(res)

5.requests 与 urllib区别
爬取数据的包有两个requests和urllib。新手(比如我)经常搞混。.

requests(第三方模块)

urllib(包)
llibrary package
import requests
headers = {‘user-agent’:‘xxxx’}
r = requests.get(url, headers = headers)
from urllib.request import urlopen,Request 
headers = {‘user-agent’:‘xxxx’}
url = Request(url, headers=headers)
r=urlopen(url,timeout=10)
返回一个response对象r 返回一个response对象r

6.注意module 'urllib' has no attribute 'request'错误

  解决方法  import  包.属性

参考  https://blog.csdn.net/qq_42787271/article/details/81571229

    https://www.cnblogs.com/AJim-ggsddu-999/p/9608642.html

原文地址:https://www.cnblogs.com/hemengjita/p/12318450.html