Web爬网程序的属性错误

时间:2013-04-18 20:58:31

标签: python regex python-3.x web-crawler urllib

运行以下代码时:

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中。谁能帮我这个?如果您能帮助我,请在下面发帖。这是一个网络爬虫,可以尽可能多地找到链接和电子邮件地址。感谢所有可以提供帮助的人。

1 个答案:

答案 0 :(得分:0)

您希望扩展 websites

websites.extend(x)

因为x本身就是一个列表。

您目前追加匹配网站列表,因此在某些时候您会将该列表从i lop传递给forurllib.request.urlopen()然后尝试将其视为Request对象,因为它肯定不是字符串,而是另一个有效选项。