Как получить большое количество href-ссылок на очень большое содержимое веб-сайта с Beautifulsoup

Я разбираю большой веб-сайт html, на котором есть более 1000 ссылок href. Я использую Beautifulsoup, чтобы получить все ссылки, но во второй раз, когда я снова запускаю программу, beautifulsoup не может с ней справиться. (найдите все конкретные теги 'td'. Как мне решить эту проблему? Хотя я могу загрузить html-страницу с помощью urllib, все ссылки не могут быть напечатаны. Когда я использую его с тегом find one 'td', он передается.

Tag = self.__Page.find('table', {'class':'RSLTS'}).findAll('td')    
    print Tag           

    for a in Tag.find('a', href= True):
        print "found", a['href']

Сейчас работаю как

Tag = self .__ Page.find ('table', {'class': 'RSLTS'}). Find ('td')
print Tag

    for a in Tag.find('a', href= True):
        print "found", a['href']

person Mira    schedule 28.02.2013    source источник


Ответы (1)


Вам нужно перебрать их:

tds = self.__Page.find('table', class_='RSLTS').find_all('td')

for td in tds:
    a = td.find('a', href=True)

    if a:
        print "found", a['href']

Хотя я бы просто использовал lxml, если у вас есть масса вещей:

root.xpath('table[contains(@class, "RSLTS")]/td/a/@href')
person Blender    schedule 28.02.2013
comment
tds = self .__ Page.find ('table', class _ = 'RSLTS'). find_all ('td') не работает из-за более 1000 'td'. Я попытался установить lxml, но не могу импортировать lxml.html.fromstring. Теперь я пытаюсь удалить ранее установленный lxml. Библиотеки Python сложно установить в Windows. - person Mira; 28.02.2013
comment
Когда программа достигает первой строки findall ('td') ', она зависает. Я больше не вижу результата. - person Mira; 28.02.2013
comment
Я получил решение, потому что конструктор __init __ (self) не может хранить весь тег из beautifulsoup. - person Mira; 01.03.2013