Как очистить весь текстовый контент домашней страницы веб-сайта?

Итак, я новичок в веб-скрейпинге, я хочу очистить весь текстовый контент только с домашней страницы.

это мой код, но теперь он работает правильно.

from bs4 import BeautifulSoup
import requests


website_url = "http://www.traiteurcheminfaisant.com/"
ra = requests.get(website_url)
soup = BeautifulSoup(ra.text, "html.parser")

full_text = soup.find_all()

print(full_text)

Когда я печатаю «full_text», он дает мне много html-контента, но не все, когда я ctrl + f " [email protected]" адрес электронной почты, который находится на домашней странице (нижний колонтитул), не найден на full_text.

Спасибо за помощь!


person tiberhockey    schedule 01.03.2020    source источник
comment
Если вы напечатаете (ra.text) или (soup.text), вы получите полный HTML-код, включая адрес электронной почты. Я не уверен, почему BS4 не возвращает адрес электронной почты, но я предполагаю, что это как-то связано с тем, как работает BS4 find_function.   -  person Thaer A    schedule 01.03.2020


Ответы (2)


Беглый взгляд на веб-сайт, с которого вы пытаетесь выполнить очистку, заставляет меня подозревать, что не весь контент загружается при отправке простого запроса на получение через модуль запросов. Другими словами, кажется вероятным, что некоторые компоненты на сайте, такие как упомянутый вами нижний колонтитул, загружаются асинхронно с Javascript.

Если это так, вы, вероятно, захотите использовать какой-либо инструмент автоматизации для перехода на страницу, дождаться ее загрузки, а затем проанализировать полностью загруженный исходный код. Для этого наиболее распространенным инструментом будет Selenium. Это может быть немного сложно настроить в первый раз, поскольку вам также потребуется установить отдельный веб-драйвер для любого браузера, который вы хотите использовать. Тем не менее, в прошлый раз, когда я устанавливал это, это было довольно легко. Вот грубый пример того, как это может выглядеть для вас (после правильной настройки Selenium):

from bs4 import BeautifulSoup
from selenium import webdriver

import time

driver = webdriver.Firefox(executable_path='/your/path/to/geckodriver')
driver.get('http://www.traiteurcheminfaisant.com')
time.sleep(2)

source = driver.page_source
soup = BeautifulSoup(source, 'html.parser')

full_text = soup.find_all()

print(full_text)
person Adam Richard    schedule 01.03.2020

Раньше я не использовал BeatifulSoup, но вместо этого попробуйте использовать urlopen. Это сохранит веб-страницу в виде строки, которую вы можете использовать для поиска электронной почты.

from urllib.request import urlopen

try:
    response = urlopen("http://www.traiteurcheminfaisant.com")
    html = response.read().decode(encoding = "UTF8", errors='ignore')
    print(html.find("[email protected]"))
except:
    print("Cannot open webpage")


person lxr196    schedule 01.03.2020