+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

无法以正确的方式使用代理

发布于2020-12-17 13:58     阅读(1881)     评论(0)     点赞(20)     收藏(2)


0

1

2

3

4

我已经在python中编写了一个脚本,以抓取通过代理请求的网址。shuffle()在脚本中使用了随机获取代理。该脚本在某种程度上运行良好。此脚本的问题是,当它无法使用任何有效代理时,由于循环,它将转到另一个URL如何以这种方式纠正脚本,以便脚本将尝试使用列表中的每个代理(如有必要)来获取全部urls

这是我的尝试:

import requests
from random import shuffle

url = "https://stackoverflow.com/questions?page={}&sort=newest"

def get_random_proxies():
    proxies = ['35.199.8.64:80', '50.224.173.189:8080', '173.164.26.117:3128']
    shuffle(proxies)
    return iter(proxies)

for link in [url.format(page) for page in range(1,6)]:
    proxy = next(get_random_proxies())
    try:
        response = requests.get(link,proxies={"http": "http://{}".format(proxy) , "https": "http://{}".format(proxy)})
        print(f'{response.url}\n{proxy}\n')
    except Exception:
        print("something went wrong!!" + "\n")
        proxy = next(get_random_proxies_iter())

我有的输出:

https://stackoverflow.com/questions?page=1&sort=newest
35.199.8.64:80

https://stackoverflow.com/questions?page=2&sort=newest
50.224.173.189:8080

something went wrong!!

https://stackoverflow.com/questions?page=4&sort=newest
50.224.173.189:8080

something went wrong!!

您可以看到两个URL'page=3&sort=newest''page=5&sort=newest'没有响应,而我的两个代理仍在工作。

后记:它们是免费代理,所以我有意发布了它们。


解决方案


关于什么:

def get_random_proxies():
    proxies = ['35.199.8.64:80', '50.224.173.189:8080', '173.164.26.117:3128']
    shuffle(proxies)
    return proxies

for link in [url.format(page) for page in range(1,6)]:
    for proxy in get_random_proxies():
        try:
            response = requests.get(link,proxies={"http":proxy , "https": proxy})
            print(f'{response.url}\n{proxy}\n')
            break  # success, stop trying proxies
        except Exception:
            print("something went wrong!!" + "\n")

我不知道什么样的计划,return(iter(...))并且next(result)是的,但更传统的方法是刚刚超过它的某些部分返回列表,然后循环,根据需要。您已经创建了列表,返回列表无需花费额外的精力。

0

1

2

3

4



所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接: https://www.pythonheidong.com/blog/article/693852/a143da229cbd854fca62/

来源: python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

20 0
收藏该文
已收藏

评论内容:(最多支持255个字符)