Python实现爬虫设置代理IP和伪装成浏览器的方法分享


Posted in Python onMay 07, 2018

1.python爬虫浏览器伪装

#导入urllib.request模块
import urllib.request
#设置请求头
headers=("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0")
#创建一个opener
opener=urllib.request.build_opener()
#将headers添加到opener中
opener.addheaders=[headers]
#将opener安装为全局
urllib.request.install_opener(opener)
#用urlopen打开网页
data=urllib.request.urlopen(url).read().decode('utf-8','ignore')

2.设置代理

#定义代理ip
proxy_addr="122.241.72.191:808"
#设置代理
proxy=urllib.request.ProxyHandle({'http':proxy_addr})
#创建一个opener
opener=urllib.request.build_opener(proxy,urllib.request.HTTPHandle)
#将opener安装为全局
urllib.request.install_opener(opener)
#用urlopen打开网页
data=urllib.request.urlopen(url).read().decode('utf-8','ignore')

3.同时设置用代理和模拟浏览器访问

#定义代理ip
proxy_addr="122.241.72.191:808"
#创建一个请求
req=urllib.request.Request(url)
#添加headers
req.add_header("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)
#设置代理
proxy=urllib.request.ProxyHandle("http":proxy_addr)
#创建一个opener
opener=urllib.request.build_opener(proxy,urllib.request.HTTPHandle)
#将opener安装为全局
urllib.request.install_opener(opener)
#用urlopen打开网页
data=urllib.request.urlopen(req).read().decode('utf-8','ignore')

4.在请求头中添加多个信息

import urllib.request
page_headers={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0",
       "Host":"www.baidu.com",
       "Cookie":"xxxxxxxx"
       }
req=urllib.request.Request(url,headers=page_headers)
data=urllib.request.urlopen(req).read().decode('utf-8','ignore')

5.添加post请求参数

import urllib.request
import urllib.parse
#设置post参数
page_data=urllib.parse.urlencode([
                  ('pn',page_num),
                  ('kd',keywords)
                  ])
#设置headers
page_headers={
     'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0',
     'Connection':'keep-alive',
     'Host':'www.lagou.com',
     'Origin':'https://www.lagou.com',
     'Cookie':'JSESSIONID=ABAAABAABEEAAJA8F28C00A88DC4D771796BB5C6FFA2DDA; user_trace_token=20170715131136-d58c1f22f6434e9992fc0b35819a572b',
     'Accept':'application/json, text/javascript, */*; q=0.01',
     'Content-Type':'application/x-www-form-urlencoded; charset=UTF-8',
     'Referer':'https://www.lagou.com/jobs/list_%E6%95%B0%E6%8D%AE%E6%8C%96%E6%8E%98?labelWords=&fromSearch=true&suginput=',
     'X-Anit-Forge-Token':'None',
     'X-Requested-With':'XMLHttpRequest'
     }
#打开网页
req=urllib.request.Request(url,headers=page_headers)
data=urllib.request.urlopen(req,data=page_data.encode('utf-8')).read().decode('utf-8')

6.利用phantomjs模拟浏览器请求

#1.下载phantomjs安装到本地,并设置环境变量
from selenium import webdriver
bs=webdriver.PhantomJS()
#打开url
bs.get(url)
#获取网页源码
url_data=bs.page_source
#将浏览到的网页保存为图片
bs.get_screenshot_as_file(filename)

7.phantomjs设置user-agent和cookie

from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
dcap = dict(DesiredCapabilities.PHANTOMJS)
dcap["phantomjs.page.settings.userAgent"] = ("Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0")
bs = webdriver.PhantomJS(desired_capabilities=dcap)
bs.get(url)
#删除cookie
bs.delete_all_cookies()
#设置cookie
#cookie格式:在浏览器cookie中查看,一个cookie需要包含以下参数,domain、name、value、path
cookie={
  'domain':'.www.baidu.com', #注意前面有.
  'name':'xxxx', 
  'value':'xxxx', 
  'path':'xxxx'
  }
#向phantomjs中添加cookie
bs.add_cookie(cookie)

8.利用web_driver工具

#1.下载web_driver工具(如chromdriver.exe)及对应的浏览器
#2.将chromdriver.exe放到某个目录,如c:\chromdriver.exe
from selenium import webdriver
driver=webdriver.Chrome(executable_path="C:\chromdriver.exe")
#打开url
driver.get(url)

以上这篇Python实现爬虫设置代理IP和伪装成浏览器的方法分享就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
简单的Python2.7编程初学经验总结
Apr 01 Python
Python中死锁的形成示例及死锁情况的防止
Jun 14 Python
python logging日志模块以及多进程日志详解
Apr 18 Python
Python使用Selenium模块实现模拟浏览器抓取淘宝商品美食信息功能示例
Jul 18 Python
python多进程实现文件下载传输功能
Jul 28 Python
Python获取命令实时输出-原样彩色输出并返回输出结果的示例
Jul 11 Python
Python实现性能自动化测试竟然如此简单
Jul 30 Python
python 装饰器功能与用法案例详解
Mar 06 Python
keras实现调用自己训练的模型,并去掉全连接层
Jun 09 Python
通过自学python能找到工作吗
Jun 21 Python
如何解决pycharm调试报错的问题
Aug 06 Python
关于Python使用turtle库画任意图的问题
Apr 01 Python
Pyspider中给爬虫伪造随机请求头的实例
May 07 #Python
python通过伪装头部数据抵抗反爬虫的实例
May 07 #Python
Django Web开发中django-debug-toolbar的配置以及使用
May 06 #Python
python安装模块如何通过setup.py安装(超简单)
May 05 #Python
python实现守护进程、守护线程、守护非守护并行
May 05 #Python
Linux(Redhat)安装python3.6虚拟环境(推荐)
May 05 #Python
Python3中的json模块使用详解
May 05 #Python
You might like
PHP动态变静态原理
2006/11/25 PHP
php使用exec shell命令注入的方法讲解
2013/11/12 PHP
php的XML文件解释类应用实例
2014/09/22 PHP
php 从一个数组中随机的取出若干个不同的数实例
2016/12/31 PHP
些很实用且必用的小脚本代码
2006/06/26 Javascript
JS是否可以跨文件同时控制多个iframe页面的应用技巧
2007/12/16 Javascript
基于jquery的返回顶部效果(兼容IE6)
2011/01/17 Javascript
jquery处理json对象
2014/11/03 Javascript
nodejs教程之制作一个简单的文章发布系统
2014/11/21 NodeJs
在JavaScript中操作时间之getMonth()方法的使用
2015/06/10 Javascript
jquery对Json的各种遍历方法总结(必看篇)
2016/09/29 Javascript
JS克隆,属性,数组,对象,函数实例分析
2016/11/26 Javascript
JavaScript实现省市县三级级联特效
2017/05/16 Javascript
详解AngularJS 模块化
2017/06/14 Javascript
Windows安装Node.js报错:2503、2502的解决方法
2017/10/25 Javascript
LayUI数据接口返回实体封装的例子
2019/09/12 Javascript
Vue props中Object和Array设置默认值操作
2020/07/30 Javascript
微信小程序实现简单的select下拉框
2020/11/23 Javascript
原生JavaScript实现进度条
2021/02/19 Javascript
使用Python制作微信跳一跳辅助
2018/01/31 Python
python opencv之分水岭算法示例
2018/02/24 Python
Python下调用Linux的Shell命令的方法
2018/06/12 Python
python机器人运动范围问题的解答
2019/04/29 Python
Python直接赋值、浅拷贝与深度拷贝实例分析
2019/06/18 Python
Python如何读写字节数据
2020/08/05 Python
无惧面试,带你搞懂python 装饰器
2020/08/17 Python
Python 下载Bing壁纸的示例
2020/09/29 Python
开学季活动策划方案
2014/02/28 职场文书
文秘专业应届生求职信
2014/05/26 职场文书
司机岗位职责
2015/02/04 职场文书
淮阳太昊陵导游词
2015/02/10 职场文书
个人工作能力自我评价
2015/03/05 职场文书
安全生产培训心得体会
2016/01/18 职场文书
解决python存数据库速度太慢的问题
2021/04/23 Python
使用Golang的channel交叉打印两个数组的操作
2021/04/29 Golang
Python破解极验滑动验证码详细步骤
2021/05/21 Python