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

╰+哭是因爲堅強的太久メ 2022-09-29 05:28 311阅读 0赞

创建时间:2017.03.14


简述

在使用python爬虫爬取数据的时候,经常会遇到一些网站的反爬虫措施,一般就是针对于headers中的User-Agent,如果没有对headers进行设置,User-Agent会声明自己是python脚本,而如果网站有反爬虫的想法的话,必然会拒绝这样的连接。而修改headers可以将自己的爬虫脚本伪装成浏览器的正常访问,来避免这一问题。


设置方法

使用requests请求页面时

  1. import requests
  2. headers = {
  3. 'Accept': '*/*',
  4. 'Accept-Language': 'en-US,en;q=0.8',
  5. 'Cache-Control': 'max-age=0',
  6. 'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36',
  7. 'Connection': 'keep-alive',
  8. 'Referer': 'http://www.baidu.com/'
  9. }
  10. resp = requests.get('http://httpbin.org/headers', headers=headers)
  11. print(resp.json())

使用urllib请求页面时

  1. import urllib, urllib2
  2. def get_page_source(url):
  3. headers = { 'Accept': '*/*',
  4. 'Accept-Language': 'en-US,en;q=0.8',
  5. 'Cache-Control': 'max-age=0',
  6. 'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36',
  7. 'Connection': 'keep-alive',
  8. 'Referer': 'http://www.baidu.com/'
  9. }
  10. req = urllib2.Request(url, None, headers)
  11. response = urllib2.urlopen(req)
  12. page_source = response.read()
  13. return page_source

使用phantomjs请求页面

  1. from selenium import webdriver
  2. from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
  3. def get_headers_driver():
  4. desire = DesiredCapabilities.PHANTOMJS.copy()
  5. headers = { 'Accept': '*/*',
  6. 'Accept-Language': 'en-US,en;q=0.8',
  7. 'Cache-Control': 'max-age=0',
  8. 'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36',
  9. 'Connection': 'keep-alive',
  10. 'Referer': 'http://www.baidu.com/'
  11. }
  12. for key, value in headers.iteritems():
  13. desire['phantomjs.page.customHeaders.{}'.format(key)] = value
  14. driver = webdriver.PhantomJS(desired_capabilities=desire, service_args=['--load-images=yes'])#将yes改成no可以让浏览器不加载图片
  15. return driver

本部分(phantomjs)代码参考


2017.7.4
最近在学python爬虫框架scrapy,有兴趣的朋友可以去移步我的博文:
使用scrapy爬取妹子图(一)

发表评论

表情:
评论列表 (有 0 条评论,311人围观)

还没有评论,来说两句吧...

相关阅读

    相关 axios设置header请求信息

    > 在前端向后端发起请求时,经常需要设置一些请求头信息,例如验证用户是否登录的token信息,在使用axios发请求时,该如何设置请求头信息呢,下面演示下。 axio