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两种遍历字典(dict)的方法比较
May 29 Python
Python使用Flask框架同时上传多个文件的方法
Mar 21 Python
Python通过调用mysql存储过程实现更新数据功能示例
Apr 03 Python
对tensorflow 的模型保存和调用实例讲解
Jul 28 Python
使用Python机器学习降低静态日志噪声
Sep 29 Python
Django 拆分model和view的实现方法
Aug 16 Python
Python如何应用cx_Oracle获取oracle中的clob字段问题
Aug 27 Python
python的time模块和datetime模块实例解析
Nov 29 Python
python实现简单飞行棋
Feb 06 Python
pyinstaller打包单文件时--uac-admin选项不起作用怎么办
Apr 15 Python
pycharm远程连接服务器并配置python interpreter的方法
Dec 23 Python
Python中lru_cache的使用和实现详解
Jan 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初学者头痛的十四个问题
2006/07/12 PHP
PHP 组件化编程技巧
2009/06/06 PHP
PHP实现搜索地理位置及计算两点地理位置间距离的实例
2016/01/08 PHP
PHP中trait使用方法详细介绍
2017/05/21 PHP
jQuery中使用each处理json数据
2015/04/23 Javascript
JavaScript实现的文本框placeholder提示文字功能示例
2018/07/25 Javascript
element-ui中的select下拉列表设置默认值方法
2018/08/24 Javascript
Angular项目如何升级至Angular6步骤全纪录
2018/09/03 Javascript
Vue 使用beforeEach实现登录状态检查功能
2019/10/31 Javascript
JavaScript对象原型链原理详解
2020/02/05 Javascript
编写Python脚本来获取Google搜索结果的示例
2015/05/04 Python
Python简单实现Base64编码和解码的方法
2017/04/29 Python
Python matplotlib绘图可视化知识点整理(小结)
2018/03/16 Python
python实现百度语音识别api
2018/04/10 Python
Python3处理HTTP请求的实例
2018/05/10 Python
python使用RNN实现文本分类
2018/05/24 Python
python如何生成各种随机分布图
2018/08/27 Python
anaconda中更改python版本的方法步骤
2019/07/14 Python
Python如何调用外部系统命令
2019/08/07 Python
Python封装成可带参数的EXE安装包实例
2019/08/24 Python
高清屏下canvas重置尺寸引发的问题的解决
2019/10/14 HTML / CSS
澳大利亚最受欢迎的美发用品目的地:AMR
2019/08/28 全球购物
英国书籍、CD、DVD和游戏的第一道德零售商:Awesome Books
2020/02/22 全球购物
培训自我鉴定
2014/01/31 职场文书
婚假请假条怎么写
2014/04/10 职场文书
计算机网络及管理学专业求职信
2014/06/05 职场文书
节约能源标语
2014/06/17 职场文书
机关干部四风问题自查报告及整改措施
2014/10/26 职场文书
委托证明范本
2014/11/25 职场文书
个人销售励志奋斗口号
2019/12/05 职场文书
Python中快速掌握Data Frame的常用操作
2021/03/31 Python
Go语言操作数据库及其常规操作的示例代码
2021/04/21 Golang
Java循环队列与非循环队列的区别总结
2021/06/22 Java/Android
MySQL数据库⾼可⽤HA实现小结
2022/01/22 MySQL
浅谈Node的内存泄露问题
2022/05/06 NodeJs
jdbc中自带MySQL 连接池实践示例
2022/07/23 MySQL