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 相关文章推荐
Python 操作文件的基本方法总结
Aug 10 Python
浅谈django开发者模式中的autoreload是如何实现的
Aug 18 Python
浅谈Python NLP入门教程
Dec 25 Python
TensorFlow利用saver保存和提取参数的实例
Jul 26 Python
python 使用装饰器并记录log的示例代码
Jul 12 Python
python中栈的原理及实现方法示例
Nov 27 Python
python pptx复制指定页的ppt教程
Feb 14 Python
在django admin详情表单显示中添加自定义控件的实现
Mar 11 Python
python zip,lambda,map函数代码实例
Apr 04 Python
OpenCV4.1.0+VS2017环境配置的方法步骤
Jul 09 Python
python json.dumps() json.dump()的区别详解
Jul 14 Python
python3爬虫中多线程进行解锁操作实例
Nov 25 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 中英文语言转换类代码
2011/08/11 PHP
php中如何使对象可以像数组一样进行foreach循环
2013/08/09 PHP
PHP根据IP地址获取所在城市具体实现
2013/11/27 PHP
php 计算两个时间相差的天数、小时数、分钟数、秒数详解及实例代码
2016/11/09 PHP
php 使用expat方式解析xml文件操作示例
2019/11/26 PHP
CentOS7系统搭建LAMP及更新PHP版本操作详解
2020/03/26 PHP
自适应图片大小的弹出窗口
2006/07/27 Javascript
Javascript 入门基础学习
2010/03/10 Javascript
jquery固定底网站底部菜单效果
2013/08/13 Javascript
JS网页图片按比例自适应缩放实现方法
2014/01/15 Javascript
Javascript图片上传前的本地预览实例
2014/06/16 Javascript
jQuery+css3实现Ajax点击后动态删除功能的方法
2015/08/10 Javascript
AngularJs学习第八篇 过滤器filter创建
2016/06/08 Javascript
JavaScript 计算笛卡尔积实例详解
2016/12/02 Javascript
jquery利用json实现页面之间传值的实例解析
2016/12/12 Javascript
JS设置时间无效问题的解决办法
2017/02/18 Javascript
jQuery的$.extend 浅拷贝与深拷贝
2017/03/08 Javascript
JavaScript设计模式之调停者模式实例详解
2018/02/03 Javascript
解决vue自定义指令导致的内存泄漏问题
2020/08/04 Javascript
js实现鼠标拖曳效果
2020/12/30 Javascript
[03:04]2018年度DOTA2玩家最喜爱的主播-完美盛典
2018/12/16 DOTA
在Python中操作列表之List.append()方法的使用
2015/05/20 Python
Python实现的逻辑回归算法示例【附测试csv文件下载】
2018/12/28 Python
Python I/O与进程的详细讲解
2019/03/08 Python
详解Python使用Plotly绘图工具,绘制甘特图
2019/04/02 Python
Python计算机视觉里的IOU计算实例
2020/01/17 Python
使用python创建生成动态链接库dll的方法
2020/05/09 Python
CSS3中HSL和HSLA的简单使用示例
2015/07/14 HTML / CSS
HTML5学习笔记之History API
2015/02/26 HTML / CSS
HTML5 Canvas 实现圆形进度条并显示数字百分比效果示例
2017/08/18 HTML / CSS
护士毕业生自荐信
2014/02/07 职场文书
2014年端午节演讲稿范文
2014/05/23 职场文书
硕士毕业论文导师评语
2014/12/31 职场文书
小学运动会开幕词
2015/01/28 职场文书
端午节寄语2015
2015/03/23 职场文书
Pytorch 中net.train 和 net.eval的使用说明
2021/05/22 Python