python爬虫之伪装浏览器

问题描述:File "D:\python\Lib\httplib.py", line 417, in _read_status

                        raise BadStatusLine(line)

首先我们得对这两行代码并对此进行解释

user_agent=‘Mozilla/4.0(compatible;MSIE 5.5; Windows NT)‘
headers ={ ‘User-Agent‘:user_agent}

User-Agent是http协议中的一部分,属于头域的组成部分
这是一种向范文网站提供你所使用的浏览器类型,操作系统,浏览器内核等信息的标识
通过这个标识,用户所访问的网站可以显示不同的排版从而为用户提供更好的体验或者
进行信息统计

IE版本Mozilla/4.0(compatible;MSIE8.0;Windows NT 6.0)

版本号是MSIE之后的数字,比如MSIE 8.0表示ie8,而Window NT 6.1对应操作系统是window7
Windows NT 6.0 对应操作系统 windows vista  
Windows NT 5.2 对应操作系统 windows 2003   
Windows NT 5.1 对应操作系统 windows xp   
Windows NT 5.0 对应操作系统 windows 2000

UNIX/LINUX 为X11代替

Firefox版本Mozilla/5.0(Windows;U;Windows NT 5.2)Gecko/20088070208 Firefox/3.0.1
其中N:表示无安全加密 I表示弱安全加密 U:表示强安全加密,上面的u表示加密等级
Chrome版本Mozilla/5.0(Windows;U;Windows NT 5.2)AppleWebKit/525.13(KHTML,like Gecko)
其中版本号是chrome后的数字
[USER_AGENT] => Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; 360SE)

注意以上的User-Agent的作用就是伪装成浏览器修改http包中的header来实现,
此条代码的试用环境是网站反感爬虫的到访

而这条语句本身没有问题,正如用User_agent来伪装浏览器寻求访问,在将headers设置成我们伪装的地址
此时我们又需要知道urllib和urllib2模块的区别和用法

区别:1.在python中urllib和urllib2不可互相代替
2.urllib2是urllib的增强,但是urllib2有urllib没有的函数
3.urllib2可以用来设置request参数,来修改header的头,更改user agent
4.urllib支持设置编码的函数,urllib.urlencode在模拟登陆的时候,经常要编码过后才能登陆,如果不用
第三方完成模拟登陆,就需要用urllib
5.urllib2和urllib一起搭配使用.

关于urllib2的介绍
urllib2提供基础函数urlopen,通过向指定的url发出请求来获取数据,最简单的形式就是
import urllib2
response=urllib2.urlopen(‘网页‘)
html=response.read()
这个过程就是我们平时刷网页的代码形式,基于请求响应模型
response=urllib2.urlopen(‘网页‘)
这个过程实际上是有两个步骤:
我们指定一个域名并发送请求
request=urllib2.request(‘网页‘)
服务器响应客户端的请求
response=urllib.urlopen(requset)

谔谔扯远了,开头的这个问题的原因是在request请求语句中并没有将headers添加进去,无法构成有效请求,导致请求列表不存在,嗯我是这样理解的

request = urllib2.Request(url,headers=headers)这样了之后这个错误就消失了,附上图片

时间: 2024-10-17 12:21:22

python爬虫之伪装浏览器的相关文章

零基础自学用Python 3开发网络爬虫(三): 伪装浏览器君

原文出处: Jecvay Notes (@Jecvay) 上一次我自学爬虫的时候, 写了一个简陋的勉强能运行的爬虫alpha. alpha版有很多问题. 比如一个网站上不了, 爬虫却一直在等待连接返回response, 不知道超时跳过; 或者有的网站专门拦截爬虫程序, 我们的爬虫也不会伪装自己成为浏览器正规部队; 并且抓取的内容没有保存到本地, 没有什么作用. 这次我们一个个解决这些小问题. 此外, 在我写这系列文章的第二篇的时候, 我还是一个对http的get和post以及response这些

python 3.4 爬虫,伪装浏览器(403 Forbidden)

在使用python抓取网页图片的时候,偶尔会遇到403错误.这可能是因为服务器禁止了爬虫.这种情况下如果想继续爬取图片的时候,就需要在请求中加入header信息,伪装成浏览器. 如果你使用的是python3.4版本,那么如果你想在网上找到在请求中加入header的方法,估计要费些周折.经过一番实验,确定下面的代码是可以的. ''' Created on 2014-9-23 @author: holiday ''' import urllib.request import os url = "ht

Python爬虫:常用浏览器的useragent

1,为什么需要修改UserAgent在写python网络爬虫程序的时候,经常需要修改UserAgent,有很多原因,罗列几个如下: 不同Agent下看到的内容不一样,比如,京东网站上的手机版网页和pc版网页上的商品优惠不一样 为避免被屏蔽,爬取不同的网站经常要定义和修改useragent值. ...... 修改agent值这个操作本身比较简单,UserAgent值是一串字符串,替换上即可,主要是用对UserAgent值.下面列出常用浏览器的useragent: 2,PC端的UserAgentsa

python爬虫(2)——urllib、get和post请求、异常处理、浏览器伪装

urllib基础 urlretrieve() urlretrieve(网址,本地文件存储地址) 直接下载网页到本地 import urllib.request #urlretrieve(网址,本地文件存储地址) 直接下载网页到本地 urllib.request.urlretrieve("http://www.baidu.com","dld.html") urlcleanup() 清除缓存 urllib.request.urlcleanup() info() 查看网页

Python伪装浏览器请求爬虫豆瓣小组

Python爬虫,下载豆瓣小组图片 # -*- coding: utf-8 -*- # ----------------------------------------------- # 程序:豆瓣小组图片爬虫 # 版本:1.0 # 语言:Python 3.4 # 作者:gdp12315 # 操作:输入豆瓣小组讨论版块地址.起始页面.终止页面 # 功能:下载小组帖子里发布的图片 # 注意:下载的保存地址为作者本机地址 读者根据自身情况更改 # --------------------------

Python3 爬虫实例(二) -- 伪装浏览器

一.伪装浏览器 对于一些需要登录的网站,如果不是从浏览器发出的请求,则得不到响应.所以,我们需要将爬虫程序发出的请求伪装成浏览器正规军.具体实现:自定义网页请求报头. 二.使用Fiddler查看请求和响应报头 打开工具Fiddler,然后再浏览器访问"https://www.douban.com/",在Fiddler左侧访问记录中,找到"200 HTTPS www.douban.com"这一条,点击查看其对应的请求和响应报头具体内容: 三.访问豆瓣 我们自定义请求报

python爬虫入门01:教你在 Chrome 浏览器轻松抓包

通过 python爬虫入门:什么是爬虫,怎么玩爬虫? 我们知道了什么是爬虫 也知道了爬虫的具体流程 那么在我们要对某个网站进行爬取的时候 要对其数据进行分析 就要知道应该怎么请求 就要知道获取的数据是什么样的 所以我们要学会怎么抓咪咪! 哦,不对. 我们要学会怎么数据抓包   虽然小馒头也是包的一种 ok...anyway... 打开我们的 Chrome 浏览器 在这里 小帅b 提醒大家一句 尽量不要用国产浏览器 很多是有后门的 所以 Chrome 是首选! ok,打开 Chrome 浏览器之后

Python爬虫(一):爬虫伪装

1 简介 对于一些有一定规模或盈利性质比较强的网站,几乎都会做一些防爬措施,防爬措施一般来说有两种:一种是做身份验证,直接把虫子挡在了门口,另一种是在网站设置各种反爬机制,让虫子知难而返. 2 伪装策略 我们知道即使是一些规模很小的网站通常也会对来访者的身份做一下检查,如验证请求 Headers,而对于那些上了一定规模的网站就更不用说了.因此,为了让我们的爬虫能够成功爬取所需数据信息,我们需要让爬虫进行伪装,简单来说就是让爬虫的行为变得像普通用户访问一样. 2.1 Request Headers

Python爬虫技术:爬虫时如何知道是否代理ip伪装成功?

前言本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. python爬虫时如何知道是否代理ip伪装成功: 有时候我们的爬虫程序添加了代理,但是我们不知道程序是否获取到了ip,尤其是动态转发模式的,这时候就需要进行检测了,以下是一种代理是否伪装成功的检测方式,这里推介使用亿牛云提供的代码示例.PS:如有需要Python爬虫+数据分析学习资料的粉丝可以点击下方链接自行获取http://note.youdao.com/noteshar