Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/90.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 使用特定URL和脚本构建代理旋转器_Html_Python 3.x_Web Scraping_Proxy_Rotation - Fatal编程技术网

Html 使用特定URL和脚本构建代理旋转器

Html 使用特定URL和脚本构建代理旋转器,html,python-3.x,web-scraping,proxy,rotation,Html,Python 3.x,Web Scraping,Proxy,Rotation,我正在努力使用为不同url构建的现有代码构建代理旋转器 下面的代码示例提供了我想要的URL。我试图让提供的脚本调用所需的URL,并在代理类型为“HTTPS”时获取所有“IP:PORT”(当前脚本限制为10个)。 这可以在xpath或bs4中完成。不过我更熟悉bs4 我理解其中的逻辑,但我在如何构建这一点上失败了。 首先,我尝试剥离字符串并尝试调用特定的td元素,但它不起作用 #URLs I want url_list = ['http://spys.one/free-proxy-list/US

我正在努力使用为不同url构建的现有代码构建代理旋转器

下面的代码示例提供了我想要的URL。我试图让提供的脚本调用所需的URL,并在代理类型为“HTTPS”时获取所有“IP:PORT”(当前脚本限制为10个)。
这可以在xpath或bs4中完成。不过我更熟悉bs4

我理解其中的逻辑,但我在如何构建这一点上失败了。 首先,我尝试剥离字符串并尝试调用特定的td元素,但它不起作用

#URLs I want 
url_list = ['http://spys.one/free-proxy-list/US/','http://spys.one/free-proxy-list/US/1/']

#code I have 
 from lxml.html import fromstring
 import requests
 from itertools import cycle
 import traceback

 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')[:10]:
     if i.xpath('.//td[7][contains(text(),"yes")]'):
        proxy = ":".join([i.xpath('.//td[1]/text()')[0], i.xpath('.//td[2]/text()')[0]])
        proxies.add(proxy)
return proxies

proxies = get_proxies()
proxy_pool = cycle(proxies)
proxy = next(proxy_pool)
response = requests.get(url,proxies={"http": proxy, "https": proxy})

我希望了解所提供的代码是如何为2个所需URL构建的,当代理类型为HTTPS时返回所有IP:端口号。一种方法是在循环中发出特定于端口的POST请求。您可以修改以添加到最终列表中。端点已经是特定于https的

import requests
from bs4 import BeautifulSoup as bs

def get_proxies(number, port, p):
    r = requests.post('http://spys.one/en/https-ssl-proxy/', data = {'xpp': 5, 'xf4': number})
    proxies = [':'.join([str(i),port]) for i in p.findall(r.text)]
    return proxies

ports = ['3128', '8080', '80']
p = re.compile(r'spy14>(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})<script')
proxies = []

for number, port in enumerate(ports,1):
    proxies+=get_proxies(number, port, p)

print(proxies)

对于你所说的已经写好的,我将参考我的原始答案:

from bs4 import BeautifulSoup as bs
import requests

def get_proxies(): 
    r = requests.get('https://free-proxy-list.net/')
    soup = bs(r.content, 'lxml')
    proxies = {tr.td.text + ':' + tr.td.next_sibling.text for tr in soup.select('tr:has(.hx:contains(yes))')} 
    return proxies 

get_proxies()

您好,代码已经为该url编写,我正在尝试构建url_list=['creative,您如何处理新端口,我在网站上看到有https和其他端口。当代理类型=https和'td'[1]文本包含“S”时,我们是否可以捕获“proxyaddress:port”?不知怎的?我添加了xpp参数,它允许最多500台服务器的结果。我们的列表中最多有81个代理,然后是三个指定端口。代码需要修改以获取https。因此这是另一种方式。因为我们只关心https,所以我选择使用https,然后在一个脚本中过滤国家并提供其他脚本中的所有国家/地区这两个URL只是我的代码使用的完整集合的子集。你可以从
http://spys.one/free-proxy-list/US/
http://spys.one/free-proxy-list/US/1/
站点使用请求模块,但您无法获取
端口,因为它们会动态生成。这不是什么当我们谈论代理旋转器时,我们的意思是。代理旋转器是一个转发到随机上游代理的代理。我很抱歉,我试图从2个URL中创建一个“代理地址:端口”列表,以便在代理类型=https时放入一个函数。这些数据可以在html中作为文本进行刮取
from bs4 import BeautifulSoup as bs
import requests

def get_proxies(): 
    r = requests.get('https://free-proxy-list.net/')
    soup = bs(r.content, 'lxml')
    proxies = {tr.td.text + ':' + tr.td.next_sibling.text for tr in soup.select('tr:has(.hx:contains(yes))')} 
    return proxies 

get_proxies()