
python 小白,爱好者 求教
用 shell 抓取到一组代理 IP 并另存为一个文本文件 xiciip.txt 中; 如:
183.129.153.122:36839 115.46.71.101:8123 222.191.233.74:36574 219.157.144.246:8118 121.31.163.225:8123 122.235.168.162:8118 119.31.210.170:7777 183.129.207.74:14823 116.62.134.173:9999 116.192.171.169:43928 115.46.77.208:8123 183.21.81.58:40539 120.92.74.237:3128 27.37.46.202:9000 120.92.74.189:3128 shell 没找到方法来测试确认代理 IP 是否可用,网上找一些 python 方法;
但网上的例子都是指定一个代理 IP 去测试;
我想用 python 按行读取代理 IP 与端口,然后用 for 循环逐行批量测试 ip 是否可用;
import requests f = open("xiciip.txt") line = f.readline() #读取一行, for line in f : try: requests.get('http://bing.com/', proxies = {"http":"http://120.92.74.189:3128"} ) #这样是成功的,120.92.74.189:3128 可用 #我想把 120.92.74.189:3128 用 line 变量来替换,多次测试没成功; except: print ( "connect failed" ) else: print ( "success" ) 请高手指定一下,如何在 proxies = 后面加入 line 变量,我不知道哪里出问题了
尝试 1 把{}中的内容 做成一个变量
proxy = '"http":"http://'+line[:-1]+'"' #不知这样定义有无问题,对 shell 和 python 的符号使用很感冒 requests.get('http://bing.com/', proxies = {proxy} ) 但不成功返回全是 failed
尝试 2
把 proxies = {"http":"http://120.92.74.189:3128"} 全定义为变量字符串
请大家帮助指教一下
如何引入变量 line "http":"http://120.92.74.189:3128"
解释一下这句语法意思,为什么会多个双引号,还有冒号的 proxies = {"http":"http://120.92.74.189:3128"}
谢谢!
1 raycool 2018-09-26 22:08:30 +08:00 |
2 bucky 2018-09-26 22:09:16 +08:00 proxies 是字典,你要循环的是字典 |
3 Qzier 2018-09-27 00:35:28 +08:00 via iPhone 用 aiohttp |
4 Trim21 2018-09-27 00:43:20 +08:00 |
5 Joshua999 2018-09-27 00:50:19 +08:00 via Android 试试 print(' "http:" ')输出的是什么就知道了 |
6 trn4 2018-09-27 07:04:56 +08:00 via iPhone 把冒号后面换成 line。另外要注意 line 有没有把换行符也一起读进来了。 在 Shell 里面用 curl 也可以测代理通不通啊。 |
7 bmos 2018-09-27 08:28:43 +08:00 xici 的我认为可以直接放弃了,不知道是不是技术原因 99%不能用。在 V2 翻到一个老帖子,推荐一下,感觉可用的很多。t/438606 |
8 PythonAnswer 2018-09-27 09:37:16 +08:00 via iPhone 有古老工具可用 |
9 Ger2EX OP 谢谢,各位的回复; |
10 PinkFish 2018-09-27 11:56:11 +08:00 readline 会把每行最后的\n 读进来,把 line strip 一下 |
11 Ger2EX OP 在网上找到一个多线程的方法,真接把 ip.txt 替换成我的, 但执行后没有反应,也没有生成文件 |
12 Ger2EX OP |