运行以下代码时:
import urllib
import re
from urllib import request
import webbrowser
#email pattern
r'[\w._(),:;<>]+@[\w._(),:;<>][.]\w+'
# url pattern
r'\w\w\w[.]\w+[.]\w+'
html = urllib.request.urlopen('somelinkthatistoolongforstackoverflow')
#find all websites
websites = re.findall(r'http://www[.]\w+[.]\w+',str(html.read()))
print(websites)
#find all emails
emails = re.findall(r'[\w._(),:;<>]+@[\w._(),:;<>][.]\w+',str(html.read()))
print(emails)
#sort through websites and find other links
for i in websites:
y = urllib.request.urlopen(i)
x = re.findall(r'http://www[.]\w+[.]\w+',str(y.read()))
websites.append(x)
我收到此错误:
AttributeError: 'list' object has no attribute 'timeout'
注意AttributeError。我该怎么办?我正在使用urllib模块和正则表达式(正则表达式)模块。这是在python 3.3.0中。谁能帮我这个?如果您能帮助我,请在下面发帖。这是一个网络爬虫,可以尽可能多地找到链接和电子邮件地址。感谢所有可以提供帮助的人。
答案 0 :(得分:0)
您希望扩展 websites
:
websites.extend(x)
因为x
本身就是一个列表。
您目前追加匹配网站列表,因此在某些时候您会将该列表从i
lop传递给for
到urllib.request.urlopen()
然后尝试将其视为Request
对象,因为它肯定不是字符串,而是另一个有效选项。