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实现通过代理服务器访问远程url的方法
Apr 29 Python
Python实现求最大公约数及判断素数的方法
May 26 Python
Python 实现一个颜色色值转换的小工具
Dec 06 Python
如何用Python合并lmdb文件
Jul 02 Python
python中的字符串内部换行方法
Jul 19 Python
python3实现点餐系统
Jan 24 Python
TensorFlow基于MNIST数据集实现车牌识别(初步演示版)
Aug 05 Python
Pytorch模型转onnx模型实例
Jan 15 Python
Python warning警告出现的原因及忽略方法
Jan 31 Python
使用python-cv2实现Harr+Adaboost人脸识别的示例
Oct 27 Python
Python通过yagmail实现发送邮件代码解析
Oct 27 Python
一起来学习Python的元组和列表
Mar 13 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
微信公众平台DEMO(PHP)
2016/05/04 PHP
PHP自带方法验证邮箱、URL、IP是否合法的函数
2016/12/08 PHP
Laravel5框架添加自定义辅助函数的方法
2018/08/01 PHP
Laravel5.1 框架响应基本用法实例分析
2020/01/04 PHP
filemanage功能中用到的lib.js
2007/04/08 Javascript
javascript自执行函数之伪命名空间封装法
2010/12/25 Javascript
js中return false(阻止)的用法
2013/08/14 Javascript
JavaScript中创建对象和继承示例解读
2014/02/12 Javascript
Javascript Object 对象学习笔记
2014/12/17 Javascript
PHPExcel中的一些常用方法汇总
2015/01/23 Javascript
jquery实现动态改变div宽度和高度
2015/05/08 Javascript
js实现的页面矩阵图形变换特效
2016/01/26 Javascript
JavaScript判断数组重复内容的两种方法(推荐)
2016/06/06 Javascript
js实现的光标位置工具函数示例
2016/10/03 Javascript
Angular2的管道Pipe的使用方法
2017/11/07 Javascript
巧妙运用v-model实现父子组件传值的方法示例
2019/04/07 Javascript
基于Element封装一个表格组件tableList的使用方法
2020/06/29 Javascript
[46:55]完美世界DOTA2联赛决赛 FTD vs Phoenix 第三场 11.08
2020/11/11 DOTA
关于Python面向对象编程的知识点总结
2017/02/14 Python
pip matplotlib报错equired packages can not be built解决
2018/01/06 Python
python爬取各类文档方法归类汇总
2018/03/22 Python
flask框架使用orm连接数据库的方法示例
2018/07/16 Python
python内存监控工具memory_profiler和guppy的用法详解
2019/07/29 Python
pandas 对日期类型数据的处理方法详解
2019/08/08 Python
python实现BP神经网络回归预测模型
2019/08/09 Python
Python之字符串的遍历的4种方式
2020/12/08 Python
鲜为人知的HTML5语音合成功能
2019/05/17 HTML / CSS
Perfume’s Club英国官网:购买香水和护肤品
2019/11/02 全球购物
100%羊绒:NakedCashmere
2020/08/26 全球购物
出国导师推荐信
2014/01/16 职场文书
精彩的英文自荐信
2014/01/30 职场文书
幼儿园毕业典礼主持词
2014/03/21 职场文书
2014年档案管理工作总结
2014/11/17 职场文书
详解Python requests模块
2021/06/21 Python
PHP实现两种排课方式
2021/06/26 PHP
Mysql Innodb存储引擎之索引与算法
2022/02/15 MySQL