Я пытаюсь создать базовый веб-искатель, используя красивый суп в python 2.7. Вот мой код:Использование красивого супа в python 2
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, в гусеничном ('https://www.google.co.in/?gfe_rd=cr&ei=SfWxVs65JK_v8we9zrj4AQ&gws_rd=ssl') Файл "web_crawler_python_2.py", строка 29, в гусеничном суп = BeautifulSoup.BeautifulSoup (ы) AttributeError: тип объекта 'BeautifulSoup' не имеет атрибут 'BeautifulSoup'
Я пробовал много, но не могу отлаживать его. Может ли кто-нибудь указать мне на проблему. (Как примечание, я знаю, что многие веб-сайты не позволяют сканировать, но я просто делаю это, чтобы учиться).
Спасибо, любая помощь будет оценена.
Источника Я использовал для кода: simple web crawler
Спасибо! Это сработало! Не могли бы вы рассказать мне, в чем проблема? –
@MahatmaGandhi: использование 'soup = BeautifulSoup.BeautifulSoup (s)' отлично подходит для версии 3; для версии 4 используется: 'soup = bs4.BeautifulSoup (s)' – Quinn