翼度科技»论坛 编程开发 python 查看内容

Python实现自定义请求头消息headers

8

主题

8

帖子

24

积分

新手上路

Rank: 1

积分
24
使用python爬虫爬取数据的时候,经常会遇到一些网站的反爬虫措施,一般就是针对于headers中的User-Agent,如果没有对headers进行设置,User-Agent会声明自己是python脚本,而如果网站有反爬虫的想法的话,必然会拒绝这样的连接。
而修改headers可以将自己的爬虫脚本伪装成浏览器的正常访问,来避免这一问题。
一、使用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
复制代码
二、使用webdriver phantomjs请求页面
  1. #自定义请求头head
  2. from selenium import webdriver
  3. from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
  4. #设置自定义请求头参数
  5. def get_headers_driver():
  6.     desire = DesiredCapabilities.PHANTOMJS.copy()
  7.     headers = {'Accept': '*/*',
  8.                'Accept-Language': 'en-US,en;q=0.8',
  9.                'Cache-Control': 'max-age=0',
  10.                'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36',
  11.                'Connection': 'keep-alive',
  12.                'Referer': 'http://www.baidu.com/'
  13.                }
  14.     for key, value in headers.items():
  15.         desire['phantomjs.page.customHeaders.{}'.format(key)] = value
  16.     driver = webdriver.PhantomJS(desired_capabilities=desire, service_args=['--load-images=yes'])#将yes改成no可以让浏览器不加载图片
  17.     return driver
  18. # 登录
  19. def login():
  20.     driver = get_headers_driver(cookie)
  21.     url = "http://******/login/main.do"
  22.     driver.get(url)
  23.     #获取网页源码
  24.     print(driver.page_source)
复制代码
来源:https://www.cnblogs.com/djdjdj123/p/17638080.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具