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装饰器使用示例及实际应用例子
Mar 06 Python
Python提取网页中超链接的方法
Sep 18 Python
使用pandas读取csv文件的指定列方法
Apr 21 Python
Django 根据数据模型models创建数据表的实例
May 27 Python
Tensorflow 实现修改张量特定元素的值方法
Jul 30 Python
Python中正则表达式的用法总结
Feb 22 Python
pyftplib中文乱码问题解决方案
Jan 11 Python
python爬虫实现POST request payload形式的请求
Apr 30 Python
Windows 平台做 Python 开发的最佳组合(推荐)
Jul 27 Python
python list的index()和find()的实现
Nov 16 Python
Python Django ORM连表正反操作技巧
Jun 13 Python
讲解Python实例练习逆序输出字符串
May 06 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
通过文字传递创建的图形按钮
2006/10/09 PHP
Linux下将excel数据导入到mssql数据库中的方法
2010/02/08 PHP
PHP防止表单重复提交的几种常用方法汇总
2014/08/19 PHP
快速解决PHP调用Word组件DCOM权限的问题
2017/12/27 PHP
laravel-admin 实现在指定的相册下添加照片
2019/10/21 PHP
javascript之解决IE下不渲染的bug
2007/06/29 Javascript
如何使用Javascript正则表达式来格式化XML内容
2013/07/04 Javascript
script标签属性用type还是language
2015/01/21 Javascript
jQuery实现强制cookie过期方法汇总
2015/05/22 Javascript
jQuery实现模拟marquee标签效果
2015/07/14 Javascript
Javascript中神奇的this
2016/01/20 Javascript
针对JavaScript中this指向的简单理解
2016/08/26 Javascript
bootstrap基本配置_动力节点Java学院整理
2017/07/14 Javascript
Vue实例中生命周期created和mounted的区别详解
2017/08/25 Javascript
关于Vue背景图打包之后访问路径错误问题的解决
2017/11/03 Javascript
基于node下的http小爬虫的示例代码
2018/01/11 Javascript
通过jquery toggleClass()属性制作文章段落更改背景颜色
2018/05/21 jQuery
Bootstrap Paginator+PageHelper实现分页效果
2018/12/29 Javascript
JavaScript实现shuffle数组洗牌操作示例
2019/01/03 Javascript
[01:14]TI珍贵瞬间系列(六):冠军
2020/08/30 DOTA
[47:43]完美世界DOTA2联赛PWL S3 Magama vs GXR 第二场 12.19
2020/12/24 DOTA
从零学Python之入门(三)序列
2014/05/25 Python
Python中无限元素列表的实现方法
2014/08/18 Python
Python编程给numpy矩阵添加一列方法示例
2017/12/04 Python
python列表list保留顺序去重的实例
2018/12/14 Python
python网络爬虫 Scrapy中selenium用法详解
2019/09/28 Python
Python如何访问字符串中的值
2020/02/09 Python
Python入门基础之数字字符串与列表
2021/02/01 Python
传媒专业推荐信范文
2013/11/23 职场文书
工程招投标邀请书
2014/01/30 职场文书
社区安全生产月活动总结
2014/07/05 职场文书
公安派出所所长四风问题个人对照检查材料
2014/10/04 职场文书
惊涛骇浪观后感
2015/06/05 职场文书
导游词之安徽九华山
2019/09/18 职场文书
导游词之宿迁乾隆行宫
2019/10/15 职场文书
Pytorch 如何加速Dataloader提升数据读取速度
2021/05/28 Python