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 11 Python
浅谈Django自定义模板标签template_tags的用处
Dec 20 Python
对Python使用mfcc的两种方式详解
Jan 09 Python
对python模块中多个类的用法详解
Jan 10 Python
wxPython实现列表增删改查功能
Nov 19 Python
pyqt5数据库使用详细教程(打包解决方案)
Mar 25 Python
在Python中使用K-Means聚类和PCA主成分分析进行图像压缩
Apr 10 Python
如何安装并在pycharm使用selenium的方法
Apr 30 Python
PyTorch-GPU加速实例
Jun 23 Python
keras的ImageDataGenerator和flow()的用法说明
Jul 03 Python
基于Python实现全自动下载抖音视频
Nov 06 Python
python 指定源路径来解决import问题的操作
Mar 04 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/10/09 PHP
php基础知识:类与对象(4) 范围解析操作符(::)
2006/12/13 PHP
php面向对象全攻略 (八)重载新的方法
2009/09/30 PHP
ThinkPHP写第一个模块应用
2012/02/20 PHP
一个基于phpQuery的php通用采集类分享
2014/04/09 PHP
Yii2框架使用计划任务的方法
2016/05/25 PHP
Flash对联广告的关闭按钮讨论
2007/01/30 Javascript
自动最大化窗口的Javascript代码
2013/05/22 Javascript
js中Math之random,round,ceil,floor的用法总结
2013/12/26 Javascript
jQuery动画特效实例教程
2014/08/29 Javascript
JavaScript简单下拉菜单实例代码
2015/09/07 Javascript
Jquery获取第一个子元素简单实例
2016/06/02 Javascript
bootstrap datepicker 与bootstrapValidator同时使用时选择日期后无法正常触发校验的解决思路
2016/09/28 Javascript
jQuery弹出层插件popShow(改进版)用法示例
2017/01/23 Javascript
js控制文本框禁止输入特殊字符详解
2017/04/07 Javascript
vue mintui-Loadmore结合实现下拉刷新和上拉加载示例
2017/10/12 Javascript
详解vue-cli项目中用json-sever搭建mock服务器
2017/11/02 Javascript
判断滚动条滑到底部触发事件(实例讲解)
2017/11/15 Javascript
Angular 如何使用第三方库的方法
2018/04/18 Javascript
使用vue打包时vendor文件过大或者是app.js文件很大的问题
2018/06/29 Javascript
uni-app使用countdown插件实现倒计时
2020/11/01 Javascript
Vue实现摇一摇功能(兼容ios13.3以上)
2021/01/26 Vue.js
[44:04]OG vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
利用python获得时间的实例说明
2013/03/25 Python
Python批量修改文件后缀的方法
2014/01/26 Python
对numpy中的transpose和swapaxes函数详解
2018/08/02 Python
Django打印出在数据库中执行的语句问题
2019/07/25 Python
Python中Unittest框架的具体使用
2019/08/27 Python
一篇文章教你用python画动态爱心表白
2020/11/22 Python
HTML5不支持frameset的两种解决方法
2016/11/14 HTML / CSS
HTML5开发动态音频图的实现
2020/07/02 HTML / CSS
JAVA和C++的区别
2013/10/06 面试题
大学优秀班主任事迹材料
2014/05/02 职场文书
应届毕业生求职简历自我评价
2015/03/02 职场文书
python装饰器代码解析
2022/03/23 Python
nginx搭建NFS网络文件系统
2022/04/14 Servers