Какой самый простой способ очистить только текст с нескольких веб-страниц (используя список URL-адресов) с помощью BeautifulSoup? Это вообще возможно?
Бест, Джорджина
Какой самый простой способ очистить только текст с нескольких веб-страниц (используя список URL-адресов) с помощью BeautifulSoup? Это вообще возможно?
Бест, Джорджина
import urllib2
import BeautifulSoup
import re
Newlines = re.compile(r'[\r\n]\s+')
def getPageText(url):
# given a url, get page content
data = urllib2.urlopen(url).read()
# parse as html structured document
bs = BeautifulSoup.BeautifulSoup(data, convertEntities=BeautifulSoup.BeautifulSoup.HTML_ENTITIES)
# kill javascript content
for s in bs.findAll('script'):
s.replaceWith('')
# find body and extract text
txt = bs.find('body').getText('\n')
# remove multiple linebreaks and whitespace
return Newlines.sub('\n', txt)
def main():
urls = [
'http://www.stackoverflow.com/questions/5331266/python-easiest-way-to-scrape-text-from-list-of-urls-using-beautifulsoup',
'http://stackoverflow.com/questions/5330248/how-to-rewrite-a-recursive-function-to-use-a-loop-instead'
]
txt = [getPageText(url) for url in urls]
if __name__=="__main__":
main()
Теперь он удаляет javascript и декодирует html-объекты.
Это вполне возможно. Самый простой способ - перебрать список URL-адресов, загрузить контент, найти URL-адреса, добавить их в основной список. Остановите итерацию, когда будет найдено достаточное количество страниц.
Несколько советов:
urllib2.urlopen
для получения контентаBeautifulSoup
: findAll('a') для поиска URLЯ знаю, что это не ответ на ваш точный вопрос (о BeautifulSoup), но неплохо было бы взглянуть на Scrapy, который, кажется, соответствует вашим потребностям.