发布于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黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
Copyright © 2018-2019 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系z452as@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!