美文网首页大数据 爬虫Python AI SqlPython小哥哥
Python-数据挖掘-请求伪装!伪装是非常重要的一环!

Python-数据挖掘-请求伪装!伪装是非常重要的一环!

作者: 14e61d025165 | 来源:发表于2019-03-17 15:28 被阅读3次

对于一些需要登录的网站,如果不是从浏览器发出的请求,是不能获得响应内容。这种情况,需要将爬虫程序发出的请求伪装成一个从浏览器发出的请求。伪装浏览器需要自定义请求报头,也就是在发送 Request 请求时,加入特定的 Headers。

欢迎大家加入小编创建的Python行业交流群,有大牛答疑,有资源共享,有企业招人!是一个非常不错的交流基地!群号:683380553

添加特定的 Headers 的方式,只需要调用 Request.add_header() 即可。如果想要查看已有的 Headers,可以通过调用 Request.get_header() 查看。

importurllib.requesturl ="http://www.baidu.com/"user_agent = {"User-Agent":"Mozilla/5.0 (compatible; MSIE 9.0; Windows NT6.1; Trident/5.0)"}request = urllib.request.Request(url, headers=user_agent)request.add_header("Connection","keep-alive")response = urllib.request.urlopen(request)print(response.code)html = response.read()print(html)

一、代理服务器

很多网站会检查某一个段时间某个 IP 的访问次数,如果同一 IP 访问过于频繁,那么该网站会禁止来自该 IP 的访问。

这种情况,可以使用代理服务器,每隔一段时间换一个代理。如果某个 IP 被禁止,可以换成其它 IP 继续爬取数据。

① 定义 opener

opener 是 urllib.request.OpenerDirector 类的对象,urlopen 就是模块构建的一个 opener,但是它不支持代理、Cookie 等其它的 HTTP/HTTPS 高级功能。如果设置代理,不能使用自带的 urlopen,而是要自定义opener。

使用相关的 Handler 处理器创建特定功能的处理器对象。

通过 urllib.request.build_opener() 方法使用这些处理器对象创建自定义到的 opener 对象。

使用自定义的 opener 对象,调用 open() 方法发送请求。这里需要注意的是,如果程序中所有的请求都使用自定义的 opener,可以使用 urllib2.install_opener() 将自定义的 opener 对象定义为全局 opener,表示之后凡是调用 urlopen,都将使用自定义的 opener。

importurllib.request# 构建一个HTTPHandler处理器对象,支持处理HTTP请求http_handler = urllib.request.HTTPHandler()# 调用 urllib2.build_opener() 方法,创建支持处理HTTP请求的 opener 对象opener = urllib.request.build_opener(http_handler)# 构建Request请求request = urllib.request.Request("http://www.baidu.com/")# 调用自定义 opener 对象的open() 方法,发送 request 请求response = opener.open(request)# 获取服务器响应内容print(response.read())

② 设置代理服务器

可以使用 urllib.request 中的 ProxyHandler() 方法来设置代理服务器。

使用自定义 opener 来设置代理服务器:

importurllib.request# 构建了两个代理Handler,一个有代理IP,一个没有代理IPhttpproxy_handler = urllib.request.ProxyHandler({"http":"47.104.14.43"})nullproxy_handler = urllib.request.ProxyHandler({})# 定义一个代理开关proxy_switch =Trueifproxy_switch:  opener = urllib.request.build_opener(httpproxy_handler)else:  opener = urllib.request.build_opener(nullproxy_handler)request = urllib.request.Request("http://www.baidu.com/")response = opener.open(request)print(response.read())

相关文章

  • Python-数据挖掘-请求伪装!伪装是非常重要的一环!

    对于一些需要登录的网站,如果不是从浏览器发出的请求,是不能获得响应内容。这种情况,需要将爬虫程序发出的请求伪装成一...

  • requests库-伪装请求

    伪装请求是将我们爬虫发送的请求伪装成更接近人使用浏览器或其他工具发送的用户请求。伪装请求的方法很多,这里要说的是伪...

  • Requests库相关操作

    用法 GET各种请求方式 get请求 解析json 获取二进制数据 添加headers(浏览器伪装) POST各种...

  • _post

    post大致逻辑 构建表单(-->伪装请求头)传递表单 req获得结果 response 作业 有道翻译取数据 作...

  • 伪装的伪装

    这个话题开始于我和某君的谈话。 作为已经向父母出柜的我,多年来养成了一种口无遮拦的“坏习惯”,即使是在拥挤的公共场...

  • 6.python爬虫 scrapy 伪装代理和fake_user

    scrapy 伪装代理和fake_userAgent的使用 伪装浏览器代理 在爬取网页是有些服务器对请求过滤的不是...

  • 什么是伪装,伪装的得失。

    什么是伪装? 百度词条说,伪装就是假装,采取措施隐蔽真相。 参考上面的信息,可以得出一个结论,伪装是相对于真相来说...

  • 五、Fegin伪装请求

    在前面的学习中,我们使用了Ribbon的负载均衡功能,大大简化了远程调用时的代码: 如果就学到这里,你可能以后需要...

  • Python小试牛刀之爬取本地城市新房价格和地址

    利用xpath解析数据,requests库爬取房价,大致步骤如下: 获得目标网址,并观察网址源码; UA伪装,请求...

  • 30年的梦

    第二百四十六章(我.箕裘颓堕) (三流的伪装是脸上的伪装,二流的伪装是肢体的伪装,一流的伪装是精神的伪装,顶级的伪...

网友评论

    本文标题:Python-数据挖掘-请求伪装!伪装是非常重要的一环!

    本文链接:https://www.haomeiwen.com/subject/tjjumqtx.html