只是一个简短的,简单的关于优秀的Python请求模块。
我似乎在文档中找不到变量“代理”应该包含什么。当我给它发送一个带有标准“IP:PORT”值的字典时,它拒绝了它要求2个值。
所以,我猜(因为这似乎没有被覆盖在文档),第一个值是ip和第二个端口?
文档只提到了这一点:
代理-(可选)字典映射协议到代理的URL。
所以我尝试了这个…我该怎么办?
proxy = { ip: port}
在把它们放入字典之前,我应该把它们转换成某种类型吗?
r = requests.get(url,headers=headers,proxies=proxy)
我刚刚做了一个代理抓取器,也可以连接到相同的抓取代理没有任何输入
这里是:
#Import Modules
from termcolor import colored
from selenium import webdriver
import requests
import os
import sys
import time
#Proxy Grab
options = webdriver.ChromeOptions()
options.add_argument('headless')
driver = webdriver.Chrome(chrome_options=options)
driver.get("https://www.sslproxies.org/")
tbody = driver.find_element_by_tag_name("tbody")
cell = tbody.find_elements_by_tag_name("tr")
for column in cell:
column = column.text.split(" ")
print(colored(column[0]+":"+column[1],'yellow'))
driver.quit()
print("")
os.system('clear')
os.system('cls')
#Proxy Connection
print(colored('Getting Proxies from graber...','green'))
time.sleep(2)
os.system('clear')
os.system('cls')
proxy = {"http": "http://"+ column[0]+":"+column[1]}
url = 'https://mobile.facebook.com/login'
r = requests.get(url, proxies=proxy)
print("")
print(colored('Connecting using proxy' ,'green'))
print("")
sts = r.status_code
代理的dict语法为{"protocol": "scheme://ip:port",…}。有了它,你可以为使用http, https和ftp协议的请求指定不同的(或相同的)代理:
http_proxy = "http://10.10.1.10:3128"
https_proxy = "https://10.10.1.11:1080"
ftp_proxy = "ftp://10.10.1.10:3128"
proxies = {
"http" : http_proxy,
"https" : https_proxy,
"ftp" : ftp_proxy
}
r = requests.get(url, headers=headers, proxies=proxies)
从请求文档推断出:
参数:
method——新请求对象的方法。
url -新请求对象的url。
...
代理-(可选)字典映射协议到代理的URL。
...
在linux上,你也可以通过HTTP_PROXY, HTTPS_PROXY和FTP_PROXY环境变量来做到这一点:
export HTTP_PROXY=10.10.1.10:3128
export HTTPS_PROXY=10.10.1.11:1080
export FTP_PROXY=10.10.1.10:3128
在Windows上:
set http_proxy=10.10.1.10:3128
set https_proxy=10.10.1.11:1080
set ftp_proxy=10.10.1.10:3128
我刚刚做了一个代理抓取器,也可以连接到相同的抓取代理没有任何输入
这里是:
#Import Modules
from termcolor import colored
from selenium import webdriver
import requests
import os
import sys
import time
#Proxy Grab
options = webdriver.ChromeOptions()
options.add_argument('headless')
driver = webdriver.Chrome(chrome_options=options)
driver.get("https://www.sslproxies.org/")
tbody = driver.find_element_by_tag_name("tbody")
cell = tbody.find_elements_by_tag_name("tr")
for column in cell:
column = column.text.split(" ")
print(colored(column[0]+":"+column[1],'yellow'))
driver.quit()
print("")
os.system('clear')
os.system('cls')
#Proxy Connection
print(colored('Getting Proxies from graber...','green'))
time.sleep(2)
os.system('clear')
os.system('cls')
proxy = {"http": "http://"+ column[0]+":"+column[1]}
url = 'https://mobile.facebook.com/login'
r = requests.get(url, proxies=proxy)
print("")
print(colored('Connecting using proxy' ,'green'))
print("")
sts = r.status_code
我分享了一些如何从网站“https://free-proxy-list.net”获取代理的代码,并将数据存储到与“精英代理切换器”(格式IP:PORT)等工具兼容的文件中:
PROXY_UPDATER -从https://free-proxy-list.net/获得免费代理
from lxml.html import fromstring
import requests
from itertools import cycle
import traceback
import re
######################FIND PROXIES#########################################
def get_proxies():
url = 'https://free-proxy-list.net/'
response = requests.get(url)
parser = fromstring(response.text)
proxies = set()
for i in parser.xpath('//tbody/tr')[:299]: #299 proxies max
proxy = ":".join([i.xpath('.//td[1]/text()')
[0],i.xpath('.//td[2]/text()')[0]])
proxies.add(proxy)
return proxies
######################write to file in format IP:PORT######################
try:
proxies = get_proxies()
f=open('proxy_list.txt','w')
for proxy in proxies:
f.write(proxy+'\n')
f.close()
print ("DONE")
except:
print ("MAJOR ERROR")