python浏览器伪装
A. python爬虫伪装浏览器出现问题求助
声明:以下代码在Python 3.3中编写调试完成!
首先我是这样做的:
import urllib.request
url = "http://www.oschina.net/"
data = urllib.request.urlopen(url).read()
print(data)
结果发现不行,OSC加了保护,不止是OSC,CSDN等等很多网站都这样,这就必须要伪装浏览器正常访问了,类似蜘蛛爬虫一样,那么只有给代码加上一个Header,再试试读取HTML。
Chrome如何查看你的浏览器的Header:
一图全解,有木有。
F12打开开发人员工具,其他浏览器也有类似功能,很方便哦,这里我们只需要Request Headers中的User-Agent就可以了。
各种纠结呀,网上许多代码都是Python2的,我用的3.3,import很多都不一样了,没办法只有翻Python的官方文档,全英文有点苦,还好我的Chrome可以随时翻译,减轻负担呀。
在官方文档3.3中找到了urllib.request的文档:docs.python.org/3/library/urllib.request.html
在Examples中找到了一个addheaders的方法,试了一下果然能行,下面就是代码。
'''
Created on 2013-1-27
@author: isaced
'''
import urllib.request
url = "http://www.oschina.net/"
headers = ('User-Agent','Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11')
opener = urllib.request.build_opener()
opener.addheaders = [headers]
data = opener.open(url).read()
print(data)
到这里就能输出页面的HTML了,也可以直接保存成本地HTML文件,打开正常。
另外对于这编码问题还是有点迷茫。
另收藏一条很有用的语句,type(),类似于C语言中的typeof(),可以print出来直接查看数据类型,很方便!
B. python爬虫伪装浏览器发送获取不到信息,反而去掉伪装就获取到了
不要使用self.header,可以输出一下self.header看看是否在调用正确,望采纳
C. 如何处理python爬虫ip被封
当python爬虫IP被封可用以下这几种方法:
1、放慢爬取速度,减少对于目标网站带来的压力,但会减少单位时间类的爬取量。
2、伪造cookies,若从浏览器中能够 正常访问一个页面,则可以将浏览器中的cookies复制过来使用
3、伪造User-Agent,在请求头中把User-Agent设置成浏览器中的User-Agent,来伪造浏览器访问。
4、使用代理IP,使用代理IP之后能够 让网络爬虫伪装自己的真实IP。
对于python网络爬虫来说,有时候业务量繁重,分布式爬虫是最佳的增强效率方式,而分布式爬虫又急切需要数目众多的IP资源,这一点免费IP是满足不了的,并且免费代理一般不提供高匿名的代理IP,因此不建议大家使用免费的代理IP。为了节约前期成本费而使用免费ip代理,最终只会因为免费ip的劣质而导致苦不堪言,反倒得不偿失。使用代理商代理IP可以有效的保障网络的安全,在IP被封的情况下可以有充足的IP可以进行更换,保证工作的正常进行。
D. Python爬虫浏览器伪装以后浏览器打不开了
进行爬虫异常处理。
爬虫在运行的过程中,经常会遇到异常。若不进行异常处理,则爬虫程序会直接崩溃停止运行,当下次再次运行时,则又会重头开始。因此,开发一个具有顽强生命力的爬虫,必须要进行异常处理。