问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
你好,欢迎来到懂视!登录注册
当前位置: 首页 - 正文

python下 selenium与chrome结合进行网页爬取,怎么设置代理IP

发布网友 发布时间:2022-04-05 23:41

我来回答

2个回答

懂视网 时间:2022-04-06 04:03

python写代理ip的方法:首先创建代理ip对象,并定制一个opener对象;然后安装opener对象,以后的urlopen就一直使用这个代理地址。

python写代理ip的方法:

方法1:

先创建代理ip对象

proxy_support = urllib.request.ProxyHandler({'https':'117.64.149.137:808'})

定制一个opener对象

opener = urllib.request.build_opener(proxy_support)

安装这个opener对象,以后的urlopen就一直使用这个代理地址了

urllib.request.install_opener(opener)

发出请求时,就是用到这个代理地址了

html = urllib.request.urlopen('xxxxxxxxxx').read()

方法2:

先创建代理ip对象

proxy_support = urllib.request.ProxyHandler({'https':'117.64.149.137:808'})

定制一个opener对象

opener = urllib.request.build_opener(proxy_support)

这里可以直接使用opener对象发出请求

html = opener.open('xxxxxxxxx').read()

示例代码:

import urllib.request
#这一段三句话是为了请求时带上浏览器标识,因为有的网站看到是爬虫的标识直接返回403
#请求的网站不涉及到提交数据,所以没有给出data参数
url = 'https://whatismyipaddress.com/'
header = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36'}
req = urllib.request.Request(url,headers=header)
#使用代理和还原不使用代理的方法
#if语句相当于一个开关,不要写成True
use_proxy = urllib.request.ProxyHandler({'https':'117.64.149.137:808'})
null_proxy = urllib.request.ProxyHandler()
if True:
 opener = urllib.request.build_opener(use_proxy)
else:
 opener = urllib.request.build_opener(null_proxy)
#根据上面的开关,安装的opener对象是否带有代理地址
urllib.request.install_opener(opener)
#获取返回结果
#同时可以使用html = opener.open(req).read()获取结果
html = urllib.request.urlopen(req).read()
#这网页返回页面的内容太多,在控制台不好查看,
#并且返回的内容是二进制格式,可以直接写入文件,当个网页查看
with open('E:whatismyip.html','wb') as file:
 file.write(html)
 print('OK')

相关免费学习推荐:python教程(视频)

热心网友 时间:2022-04-06 01:11

#coding:utf-8
import sys,re,random,time,os
import socket
from socket import error as socket_error
import threading
import urllib2,cookielib
from bs4 import BeautifulSoup

from selenium import webdriver
from selenium.webdriver.common.proxy import *
from selenium.webdriver.firefox.firefox_profile import FirefoxProfile
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary

proxyFilePath = time.strftime("%Y%m%d")

def testSocket(ip, port):
'''
socket连接测试,用来检测proxy ip,port 是否可以正常连接
'''
print '正在测试socket连接...'
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
sock.settimeout(10)
sock.connect((ip, int(port)))
#sock.send('meta')
sock.close()
print ip+':'+port+'--status:ok'
return 1
except socket_error as serr: # connection error
sock.close()
print ip+':'+port+'--status:error--Connection refused.'
return 0

def getDriver(httpProxy = '', type='Firefox'):
if type == 'Firefox':
proxy = Proxy({
'proxyType': ProxyType.MANUAL,
'httpProxy': httpProxy,
'ftpProxy': httpProxy,
'sslProxy': httpProxy,
'noProxy': '' # set this value as desired
})
firefox_profile = FirefoxProfile()
#firefox_profile.add_extension("firefox_extensions/adblock_plus-2.5.1-sm+tb+an+fx.xpi")
firefox_profile.add_extension("firefox_extensions/webdriver_element_locator-1.rev312-fx.xpi")
firefox_profile.set_preference("browser.download.folderList",2)
firefox_profile.set_preference("webdriver.load.strategy", "unstable")
#driver = webdriver.Firefox(firefox_profile = firefox_profile, proxy=proxy, firefox_binary=FirefoxBinary('/usr/bin/firefox'))
#driver = webdriver.Firefox(firefox_profile = firefox_profile, proxy=proxy, firefox_binary=FirefoxBinary("/cygdrive/c/Program\ Files\ (x86)/Mozilla\ Firefox/firefox.exe"))
driver = webdriver.Firefox(firefox_profile = firefox_profile, proxy=proxy)
elif type == 'PhantomJS': # PhantomJS
service_args = [
'--proxy='+httpProxy,
'--proxy-type=http',
]
webdriver.DesiredCapabilities.PHANTOMJS['phantomjs.page.customHeaders.Accept'] = 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8'
webdriver.DesiredCapabilities.PHANTOMJS['phantomjs.page.customHeaders.User-Agent'] = 'Mozilla/5.0 (X11; Windows x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.117 Safari/537.36'
driver = webdriver.PhantomJS(executable_path='windows/phantomjs.exe', service_args=service_args)
else: # Chrome
chrome_options = webdriver.ChromeOptions()
#chrome_options.add_extension('firefox_extensions/adblockplus_1_7_4.crx')
chrome_options.add_argument('--proxy-server=%s' % httpProxy)
driver = webdriver.Chrome(executable_path='windows/chromedriver.exe', chrome_options=chrome_options)
return driver
声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com
尘螨过敏性哮喘病因 肝癌铁蛋白肝癌铁蛋白介绍 王保捷简介 英语key是什么意思 中国银行有什么卡 化学离子键和共价键的区别? 为什么安装不了百度云盘 一个小时内创建一个 CentOS 家庭实验室 | Linux 中国 linux下的centos7中的vsftp服务器搭建,ftp可以做什么牛 CentOS7系统中配置ftp服务具体方法 python 如何编写代理服务器 Python如何搭建代理IP? python 为什么没对aliens变量内字典修改赋值 反而影响了? python中字典里的值不能作为实参 python字典key不同,value相同的情况下,怎么取出所有key? 求python中字典结构对值的排序的函数, 值为数字, 可能存在重复 python 一个由字典构成的列表,修改其中1个字典的键的值,却把该列表所有字典相同的键的值都一起修改了? Python中5是字典中的值,用*3,怎么结果是555,不是15? python字典的值可以是多个吗 python 字典 合并重复key的问题 在Python中,为什么字典的键值不可以更改 python 如何使数组中的元素不重复 python 字典可以有相同的key吗 我用Python写的,这里为什么不会循环测试字典里的键呢? python字典中存在相同的key,如何把这个key对应的值依次输出? python的dic和set的key不可变还是不能重复啊如图 python为什么使用字典解析会出现值一样的结果 python将字典的键和值对换后值重复怎么办 laravel数据库读写分离了,如何指定从写的数据库读取数据? PHP的Laravel中的如何从视图中获取来自数据库中的信息并在控制器中获取 python怎么写代理程序,它可以把socks转成http吗 如何用 Python 搞一个代理服务器 python selenium phantomjs怎么加代理ip 代理IP对于Python爬虫有多重要 python爬虫都有哪些算法 深度学习中经典算法有哪些python包可以直接拿来用而不用手撸代码?如题_问一问 有没有python算法书 sql数据库中的Float数据类型是占几位,几个字节 ,也就是占几个0和1 plc的float多少字节 java中float和double是多少位浮点数 c语言中float u2[2]占几个字节 float x[3][5]; 数组x占多少个字节? ghost win7 sp1 x86是什么意思 为什么我的系统是WIN764位的,但C盘中的程序文件夹是x86,这里的X86究竟是什么意思? win7 X86 X64区别 什么是win7 32位? 和64位有什么区别吗?? Win7与Win10哪个系统好 家用win10和win7哪个好用 win7怎么打开wifi功能 win7链接不上WiFi,在链接WiFi处显示红叉,求解决,谢谢。
  • 焦点

最新推荐

猜你喜欢

热门推荐