Разбор "Дальнейшего чтения" с селеном, python - PullRequest
0 голосов
/ 12 марта 2020

Мне нужно разобрать текст из дальнейшего чтения в Википедии. Мой код может открыть «Google», введя запрос, например «Билл Гейтс», а затем он может найти URL-адрес страницы Википедии. И теперь мне нужно проанализировать текст из дальнейшего чтения, но я не знаю, как. Вот код:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

URL = "https://www.google.com/"
adress = input()  #input request, example: Bill Gates

def main():
    driver = webdriver.Chrome()
    driver.get(URL)
    element = driver.find_element_by_name("q")
    element.send_keys(adress, Keys.ARROW_DOWN)
    element.send_keys(Keys.ENTER)
    elems = driver.find_elements_by_css_selector(".r [href]")
    link = [elem.get_attribute('href') for elem in elems]
    url = link[0]    #wikipedia's page's link


if __name__ == "__main__":
    main()

А вот HTML код

<h2>
<span class="mw-headline" id="Further_reading">Further reading</span>
</h2>
<ul>
<li>...</li>
<li>...</li>
<li>...</li>
<li>...</li>
...
</ul>
<h3>
<span class="mw-headline" id="Primary_sources">Primary sources</span>
<ul>
<li>...</li>
<li>...</li>
<li>...</li>
...
</ul>

url - https://en.wikipedia.org/wiki/Bill_Gates

1 Ответ

1 голос
/ 12 марта 2020

Эта страница содержит текст для дополнительного чтения между 2 h2 тегами. Чтобы собрать текст, просто найдите ul элементов между h2 с. Вот код, который работал для меня:

# Open the page:
driver.get('https://en.wikipedia.org/wiki/Bill_Gates')
# Search for element, get text:
further_read = driver.find_element_by_xpath("//ul[preceding-sibling::h2[./span[@id='Further_reading']] and following-sibling::h2[./span[@id='External_links']]]").text
print(further_read)

Надеюсь, это поможет, удачи.

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