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中为feedparser设置超时时间避免堵塞
Sep 28 Python
python3.5仿微软计算器程序
Mar 30 Python
Python中的复制操作及copy模块中的浅拷贝与深拷贝方法
Jul 02 Python
pytorch cnn 识别手写的字实现自建图片数据
May 20 Python
Python numpy实现二维数组和一维数组拼接的方法
Jun 05 Python
python实现Virginia无密钥解密
Mar 20 Python
python自定义函数实现最大值的输出方法
Jul 09 Python
python 判断三个数字中的最大值实例代码
Jul 24 Python
Python类中方法getitem和getattr详解
Aug 30 Python
python中seaborn包常用图形使用详解
Nov 25 Python
使用 Python 在京东上抢口罩的思路详解
Feb 27 Python
python文本处理的方案(结巴分词并去除符号)
May 26 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
兼容PHP5的PHP目录管理函数库
2008/07/10 PHP
[原创]php token使用与验证示例【测试可用】
2017/08/30 PHP
php 读写json文件及修改json的方法
2018/03/07 PHP
一步一步教你写一个jQuery的插件教程(Plugin)
2009/09/03 Javascript
javascript 鼠标悬浮图片显示原图 移出鼠标后原图消失(多图)
2009/12/28 Javascript
javascript多种数据类型表格排序代码分析
2010/09/11 Javascript
javascript 窗口加载蒙板 内嵌网页内容
2010/11/19 Javascript
javascript开发技术大全-第3章 js数据类型
2011/07/03 Javascript
jQuery中remove()方法用法实例
2014/12/25 Javascript
js中字符串编码函数escape()、encodeURI()、encodeURIComponent()区别详解
2016/04/01 Javascript
JS 事件绑定、事件监听、事件委托详细介绍
2016/09/28 Javascript
微信小程序  http请求封装详解及实例代码
2017/02/15 Javascript
JavaScript实现时间表动态效果
2017/07/15 Javascript
JS引用传递与值传递的区别与用法分析
2018/06/01 Javascript
Next.js实现react服务器端渲染的方法示例
2019/01/06 Javascript
Node.js + express实现上传大文件的方法分析【图片、文本文件】
2019/03/14 Javascript
js实现图片上传即时显示效果
2019/09/30 Javascript
[57:50]DOTA2上海特级锦标赛主赛事日 - 4 胜者组决赛Secret VS Liquid第二局
2016/03/05 DOTA
python2.7删除文件夹和删除文件代码实例
2013/12/18 Python
简单谈谈Python中的闭包
2016/11/30 Python
python中文分词,使用结巴分词对python进行分词(实例讲解)
2017/11/14 Python
详解python中eval函数的作用
2019/10/22 Python
python+OpenCV实现图像拼接
2020/03/05 Python
在PyTorch中使用标签平滑正则化的问题
2020/04/03 Python
Win10用vscode打开anaconda环境中的python出错问题的解决
2020/05/25 Python
Python使用itcaht库实现微信自动收发消息功能
2020/07/13 Python
python 实现波浪滤镜特效
2020/12/02 Python
Python实现京东抢秒杀功能
2021/01/25 Python
世界闻名的衬衫制造商:Savile Row Company
2018/07/30 全球购物
实习教师自我鉴定
2013/09/27 职场文书
小学教师暑期培训方案
2014/08/28 职场文书
教师见习报告范文
2014/11/03 职场文书
2014年学生会干事工作总结
2014/11/07 职场文书
顶岗实习计划书
2015/01/16 职场文书
导游词之云南丽江-泸沽湖
2019/09/26 职场文书
CSS中使用grid布局实现一套模板多种布局
2022/07/15 HTML / CSS