我正在尝试使用python 2.7中的Beautiful soup构建一个基本的Web爬虫。 这是我的代码:
import re
import httplib
import urllib2
from urlparse import urlparse
from bs4 import BeautifulSoup
regex = re.compile(
r'^(?:http|https)s?://' # http:// or https://
r'(?:(?:[A-Z0-9](?:[A-Z0-9-]{0,61}[A-Z0-9])?\.)+(?:[A-Z]{2,6}\.?|[A-Z0-9-]{2,}\.?)|' #domain...
r'localhost|' #localhost...
r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})' # ...or ip
r'(?::\d+)?' # optional port
r'(?:/?|[/?]\S+)$', re.IGNORECASE)
def isValidUrl(url):
if regex.match(url) is not None:
return True;
return False
def crawler(SeedUrl):
tocrawl=[SeedUrl]
crawled=[]
while tocrawl:
page=tocrawl.pop()
print 'Crawled:'+page
pagesource=urllib2.urlopen(page)
s=pagesource.read()
soup=BeautifulSoup.BeautifulSoup(s)
links=soup.findAll('a',href=True)
if page not in crawled:
for l in links:
if isValidUrl(l['href']):
tocrawl.append(l['href'])
crawled.append(page)
return crawled
crawler('https://www.google.co.in/?gfe_rd=cr&ei=SfWxVs65JK_v8we9zrj4AQ&gws_rd=ssl')
我收到错误:
抓取:https://www.google.co.in/?gfe_rd=cr&ei=SfWxVs65JK_v8we9zrj4AQ&gws_rd=ssl Traceback(最近一次调用最后一次): 文件“web_crawler_python_2.py”,第38行,in 爬虫( 'https://www.google.co.in/?gfe_rd=cr&ei=SfWxVs65JK_v8we9zrj4AQ&gws_rd=ssl') 在抓取工具中的第29行文件“web_crawler_python_2.py” 汤= BeautifulSoup.BeautifulSoup(S) AttributeError:类型对象'BeautifulSoup'没有属性'BeautifulSoup'
我尝试了很多但似乎无法调试它。任何人都可以指出我的问题。 (作为旁注,我知道很多网站都不允许抓取,但我只是在学习它。)
谢谢,任何帮助都将不胜感激。
我用过代码的来源:simple web crawler
答案 0 :(得分:2)
此类没有属性BeautifulSoup。我不知道你为什么用它。 documentation的示例:
from bs4 import BeautifulSoup
soup = BeautifulSoup(html_doc, 'html.parser')
您需要更换:
BeautifulSoup.BeautifulSoup
到
BeautifulSoup