关于代理的设置

        由于一些网站采取了一些反爬虫的措施。比如,服务器会检测某个IP在单位时间内的请求次数,如果超过了某个阈值,那么服务器会直接拒绝服务,返回一些错误信息。这种情况可以称为封IP,也就是网站把我们的IP给封掉了。解决方法当然就是使用代理了。本文主要经一些 常用的Python模块代理的使用,包括urllib,requests,selenium。

1.urllib

#urllib
#输出结果是一个JSON,它有一个字段origin,表明了客户端的IP。
from urllib.error import URLError
from urllib.request import ProxyHandler,build_opener

proxy=''
# proxy='username:password@'     #若碰到需要认证的代理,可以进行这样的设置。
proxy_handler=ProxyHandler({
    'http':'http://'+proxy,
    'https':'https://'+proxy,
})
opener=build_opener(proxy_handler)
try:
    response=opener.open('http://httpbin.org/get')
    print(response.read().decode('utf-8'))
except URLError as e:
    print(e.reason)

2.requests

#requests
import requests

proxy=''
proxy='username:password@'         #有用户验证的情况
proxies={
    'http':'http://'+proxy,
    'https':'https://'+proxy,
}
try:
    response=requests.get('http://httpbin.org/get',proxies=proxies)
    print(response.text)
except requests.exceptions.ConnectionError as e:
    print('Error',e.args)

3.selenium

#selenium(有界面:Chrome,无界面:Plantomjs)
#Chrome
from selenium import webdriver

proxy=''
chrome_options=webdriver.ChromeOptions()
chrome_options.add_argument('--proxy-server=http://'+proxy)
browser=webdriver.Chrome(chrome_options=chrome_options)
browser.get('http://httpbin.org/get')

#plantomjs
from selenium import webdriver

service_args=[
    '--proxy=',
    '--proxy-type=http'
]
# service_args=[
#     '--proxy=127.0.0.1:9743',
#     '--proxy-type=http',
#     '--proxy-auth=username:password'
# ]        #需要进行认证设置的时候
browser=webdriver.PhantomJS(service_args=service_args)
browser.get('http://httpbin.org/get')
print(browser.page_source)

猜你喜欢

转载自blog.csdn.net/coolcooljob/article/details/80412187