Python爬虫实践(三)设置Headers

原创 2016年06月20日 14:44:43

例子:以登录知乎为例

import urllib2
import urllib

values={"username":"XXXX@qq.com","password":"XXXX"}
data=urllib.urlencode(values)
url= "https://www.zhihu.com/#signin"
request=urllib2.Request(url,data)
response=urllib2.urlopen(request)
print response.read()

以上程序运行之后无法登录知乎,错误如下:

    raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
HTTPError: HTTP Error 403: Forbidden

出现urllib2.HTTPError: HTTP Error 403: Forbidden错误是由于网站禁止爬虫,可以在请求加上头信息,伪装成浏览器访问.


在登录之后的知乎首页按F12->network,点击第一个请求,查看headers,可看到GeneralResponse HeadersRequest Headers三个分类,有

  • Request URL: https://www.zhihu.com/
  • Request Method:GET
  • User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36

等等参数。

其中,agent就是请求的身份,如果没有写入请求身份,那么服务器不一定会响应,所以可以在headers中设置agent,

import urllib2
import urllib

values={"username":"xxxx","password":"xxxxx"}
data=urllib.urlencode(values)
url= "https://www.zhihu.com/#signin"
user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64)"
referer='http://www.zhihu.com/articles'
headers={"User-Agent":user_agent,'Referer':referer}
request=urllib2.Request(url,data,headers)
response=urllib2.urlopen(request)
print response.read()

好吧,知乎好像不行啊,好像有什么反爬虫机制什么的。

算了 降低难度,直接不登录扒一扒自己的博客看看:

import urllib2
import urllib

url= "http://blog.csdn.net/horseinch"
user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36"
headers={"User-Agent":user_agent}
request=urllib2.Request(url,headers=headers)
response=urllib2.urlopen(request)
print response.read()

运行正常(不加header运行失败)。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

python-网络爬虫初学二:headers的设置和一些高级特性

一、设置headers url = "http://www.server.com/login" # 设置请求的身份,如果没有,服务器可能会没有响应 user_agent = "Mozilla/4.0...

python爬虫设置请求消息头(headers)

为python爬虫设置headers,包括urllib和phantomjs两种情况。

http请求(Python爬虫headers)

在http请求中,第一行必须是一个请求行,用来说明请求类型,要访问的资源,以及使用的HTTP版本; 然后是一个首部(header)小节,用来说明服务器要使用的附加信息。 :在首部之后是一个空行,...

Python Requests快速入门

快速上手 迫不及待了吗?本页内容为如何入门Requests提供了很好的指引。其假设你已经安装了Requests。如果还没有, 去 安装 一节看看吧。 首先,确认一下: Request...
  • iloveyin
  • iloveyin
  • 2014年03月18日 10:09
  • 177184

Python 3 之 Chrom 截获的Headers转成dict格式

如题,直接复制Chrom截获的Headers如下: Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/...

python--httplib模块使用

httplib是一个相对底层的http请求模块,其上有专门的包装模块,如urllib内建模块,goto等第三方模块,但是封装的越高就越不灵活,比如urllib模块里请求错误时就不会返回结果页的内容,只...
  • five3
  • five3
  • 2011年12月16日 23:42
  • 93134

Python发送带header的http请求

简单的header import urllib2 request = urllib2.Request('http://example.com/') request.add_header('User-...

Python爬虫.修改请求头Header(学习笔记)

HTTP请求头是我们每次向网络服务器发送请求时,想其传递的一组属性和配置信息,本文是关于header的查看和修改...

Python设置http的header请求访问URL

刚毕业的我,跌跌蹱蹱由原来梦想成为一名高级网络工程师变成了现在的运维工程师,虽然只是初级的运维,但我还是想对技术有一定追求,希望自己能成为一名优秀的高级运维工程师。看过一些书,查过一些资料,但最后都没...

python爬虫05--添加header

#具体可以看下面代码 import urllib.request import json import urllib.parse url = "http://fanyi.youdao.com/t...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Python爬虫实践(三)设置Headers
举报原因:
原因补充:

(最多只允许输入30个字)