【发布时间】:2016-07-18 22:00:08
【问题描述】:
在论坛的帮助下,我制作了一个脚本,可以捕捉到本页主题的所有链接https://www.inforge.net/xi/forums/liste-proxy.1118/。这些主题包含代理列表。脚本是这样的:
import urllib.request, re
from bs4 import BeautifulSoup
url = "https://www.inforge.net/xi/forums/liste-proxy.1118/"
soup = BeautifulSoup(urllib.request.urlopen(url), "lxml")
base = "https://www.inforge.net/xi/"
for tag in soup.find_all("a", {"class":"PreviewTooltip"}):
links = tag.get("href")
final = [base + links]
final2 = urllib.request.urlopen(final)
for line in final2:
ip = re.findall("(?:[\d]{1,3})\.(?:[\d]{1,3})\.(?:[\d]{1,3})\.(?:[\d]{1,3}):(?:[\d]{1,5})", line)
ip = ip[3:-1]
for addr in ip:
print(addr)
输出是:
Traceback (most recent call last):
File "proxygen5.0.py", line 13, in <module>
sourcecode = urllib.request.urlopen(final)
File "/usr/lib/python3.5/urllib/request.py", line 162, in urlopen
return opener.open(url, data, timeout)
File "/usr/lib/python3.5/urllib/request.py", line 456, in open
req.timeout = timeout
AttributeError: 'list' object has no attribute 'timeout'
我知道问题出在:final2 = urllib.request.urlopen(final) 但我不知道如何解决
如何打印ips?
【问题讨论】:
-
问题是
final = [base + links]创建了一个包含一个元素的列表,而不是使用final2 = urllib.request.urlopen(final)的列表,您应该传递一个字符串(网址)而不是列表。 -
是的..我很愚蠢,你是对的..那我怎么能绕过这个呢?如果你有空回答
-
将
final = [base + links]替换为final = base + links。请注意,您只保留从标签中解析的最后一个 final,如果您需要所有这些,则应更改其他代码。 -
我是一个新手,我正在继续尝试,但我仍然没有意识到我应该在“其他代码”中更改什么,就像你首先说的那样。大声笑
标签: python python-3.x hyperlink timeout try-catch