phantomjs 设置代理

摘要:
Phantomjsinphantomjs。exe'browser=网络驱动程序。PhantomJS(PATH_PhantomJS)#真正的ip浏览器。获取('http:

phantomjs 可通过以下设置代理ip

#coding=utf-8
import os
import re
import time
import requests
from scrapy.selector import HtmlXPathSelector
from scrapy.http import HtmlResponse
from selenium import webdriver
from selenium.webdriver.common.proxy import ProxyType

import sys
reload(sys)
sys.setdefaultencoding("utf-8")

import warnings
warnings.filterwarnings("ignore")


if __name__ == '__main__':
PATH_PHANTOMJS=r'D:phantomjsinphantomjs.exe'
browser=webdriver.PhantomJS(PATH_PHANTOMJS)
#真实ip
browser.get('http://icanhazip.com/') #获取ip网址
response = HtmlResponse(url='',body=str(browser.page_source))
hxs = HtmlXPathSelector(response)
print 'your ip is:',''.join(hxs.select('//text()').extract()).strip()
#代理ip
proxy=webdriver.Proxy()
proxy.proxy_type=ProxyType.MANUAL
proxy.http_proxy='220.248.229.45:3128'
#将代理设置添加到webdriver.DesiredCapabilities.PHANTOMJS中
proxy.add_to_capabilities(webdriver.DesiredCapabilities.PHANTOMJS)
browser.start_session(webdriver.DesiredCapabilities.PHANTOMJS)
browser.get('http://icanhazip.com/') #获取ip网址
response = HtmlResponse(url='',body=str(browser.page_source))
hxs = HtmlXPathSelector(response)
print 'your proxy ip is:',''.join(hxs.select('//text()').extract()).strip()

经测试,实际有效,截图如下:

phantomjs 设置代理第1张

后期可以考虑将此方法运用至下载中,减少爬虫被封的几率。

免责声明:文章转载自《phantomjs 设置代理》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇[域渗透]MS14-068利用ckeditor粘贴word图片且图片文件自动上传功能下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

3 使用selenium模拟登录csdn

之前通过F12开发者模式调试,获取网站后台服务器验证用户名和密码的URL之后,再构造post数据的方式会存在一个问题,就是对目标网站的验证机制不明确,构造post数据除了用户名和密码之外,还可能有更复杂的协议。比如csdn的fkid机制,见上一篇博文。 2 模拟登录_Post表单方式(针对chinaunix有效,针对csdn失效,并说明原因) 使用sele...

python中csv文件的读取问题

在python读取csv格式的文件时,使用csv.reader读取文件对象,出现了line contains NULL byte的错误,如下: reader = csv.reader(open(filepath, "rU")) try: for row in reader: print 'Row read successfully!...

odoo里的开发规范

1、模块命名[驼峰命名方法] res开头的是:resources   常见模型:res.users,   res.company,    res.partner,   res.config.settings   等。。。 @api.modeldef _selection_grade(self): res_grade = [] grade_lis...

flutter_blue 蓝牙插件实战及那些坑

项目场景: 地下车库无网路的情况下需要使用蓝牙对小区门禁进行开门 本人掘金文章 坑一: 安卓端引入flutter_blue运行项目报错 1. 原因: 安卓sdk版本需要28以上 2. 解决: android/build.gradle 下修改 compileSdkVersion  targetSdkVersion 为 28;  minSdkVersion 修...

loki 数据库详解

介绍 LokiJS是一个面向文档的javascript数据库,与MongoDB有点相似。 它支持索引,查询和过滤数据集合。 LokiJS还支持更高级的功能,例如mapReduce,事务,并允许您实现自定义远程同步以将数据保存到服务器(或移动设备上的本地文件)。 磁盘的持久性已经在诸如nodejs之类的CommonJS环境中实现, 在移动设备上,您只需要请求...

利用Layer组件弹出多个对话框(非嵌套)与关闭及刷新

页面A中弹出页面B,在页面B中弹出页面C,在layer做嵌套ifframe弹出时会遇到C页面被嵌套在B页面中,如果C尺寸大于B,则C将不能显示完整。这个时候可以考虑B,C页面均由A页面弹出从而避免嵌套带来的问题。废话少说,直接上代码。 1.A弹出B: 在A.html中插入一下代码 layer.open({ title:'...