python爬虫设置请求消息头(headers)
创建时间:2017.03.14
简述
在使用python
爬虫爬取数据的时候,经常会遇到一些网站的反爬虫措施,一般就是针对于headers
中的User-Agent
,如果没有对headers
进行设置,User-Agent
会声明自己是python
脚本,而如果网站有反爬虫的想法的话,必然会拒绝这样的连接。而修改headers
可以将自己的爬虫脚本伪装成浏览器的正常访问,来避免这一问题。
设置方法
使用requests请求页面时
import requests
headers = {
'Accept': '*/*',
'Accept-Language': 'en-US,en;q=0.8',
'Cache-Control': 'max-age=0',
'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36',
'Connection': 'keep-alive',
'Referer': 'http://www.baidu.com/'
}
resp = requests.get('http://httpbin.org/headers', headers=headers)
print(resp.json())
使用urllib请求页面时
import urllib, urllib2
def get_page_source(url):
headers = { 'Accept': '*/*',
'Accept-Language': 'en-US,en;q=0.8',
'Cache-Control': 'max-age=0',
'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36',
'Connection': 'keep-alive',
'Referer': 'http://www.baidu.com/'
}
req = urllib2.Request(url, None, headers)
response = urllib2.urlopen(req)
page_source = response.read()
return page_source
使用phantomjs请求页面
from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
def get_headers_driver():
desire = DesiredCapabilities.PHANTOMJS.copy()
headers = { 'Accept': '*/*',
'Accept-Language': 'en-US,en;q=0.8',
'Cache-Control': 'max-age=0',
'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36',
'Connection': 'keep-alive',
'Referer': 'http://www.baidu.com/'
}
for key, value in headers.iteritems():
desire['phantomjs.page.customHeaders.{}'.format(key)] = value
driver = webdriver.PhantomJS(desired_capabilities=desire, service_args=['--load-images=yes'])#将yes改成no可以让浏览器不加载图片
return driver
本部分(phantomjs)代码参考
2017.7.4
最近在学python爬虫框架scrapy,有兴趣的朋友可以去移步我的博文:
使用scrapy爬取妹子图(一)
还没有评论,来说两句吧...