Получить текст всех ссылок - PullRequest
0 голосов
/ 27 июня 2018

Я пытаюсь получить текст некоторого a, который живет в li, внутри div. Что-то вроде: div -> ul -> li -> a. Но я не дошел до этого. Я могу напечатать первый элемент, и когда я изменяю .find на findAll, консоль возвращает ошибку:

"ResultSet object has no attribute `'%s'`. You're probably treating a list of items like a single item. Did you call `find_all()` when you meant to call `find()`?" 
`% key` AttributeError: `ResultSet` object has no attribute 'text'. You're probably treating a list of items like a single item. Did you call `find_all()` when you meant to call `find()`?

Мой код до сих пор:

 1 from urllib.request import urlopen
 2 from bs4 import  BeautifulSoup
 3 import pandas as pd
 4 
 5 url = "http://amoraosromances.blogspot.com/"
 6 page = urlopen(url)
 7 soup = BeautifulSoup(page, 'lxml')
 8 
 9 for div in soup.findAll('div', class_='widget Label', id='Label2'):
10     a = div.findAll('a')
11     print(a.text)

1 Ответ

0 голосов
/ 27 июня 2018

Если вы не связаны с beautifulsoup, тогда вы можете использовать Selenium WebDriver, чтобы сделать то же самое.

Я попробовал этот кусок кода, чтобы получить то, что вы хотели

from selenium import webdriver
import time

chrome_path  = 'path_to_chromedriver_exe'

driver = webdriver.Chrome(chrome_path)

driver.maximize_window()

driver.get('http://amoraosromances.blogspot.com/')
time.sleep(5)

parent_element = driver.find_element_by_css_selector('div#Label2.widget.Label > div > ul')
child_elements = parent_element.find_elements_by_tag_name('li')

for i in child_elements:
    print(i.text)


driver.quit()

, который дает вывод как

ABANDONADO NO ALTAR (8)
ACIDENTE (97)
ADOLESCENTE (23)
ADORÁVEL PRISIONEIRA FANFIC (1)
ADULTÉRIO (26)
AEROMOÇA (3)
AGENCIA DE CASAMENTO (3)
AMANTE (74)
....

Вы можете использовать эту ссылку , чтобы начать работу с Selenium, если вы хотите настроить его для Chrome.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...