Как скрести всю домашнюю страницу с текстовым контентом сайта? - PullRequest
0 голосов
/ 01 марта 2020

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

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

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 " traiteurcheminfaisant@hotmail.com" адрес электронной почты, который находится на домашней странице (нижний колонтитул), не найден в full_text.

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

Ответы [ 2 ]

3 голосов
/ 01 марта 2020

Быстрый взгляд на веб-сайт, с которого вы пытаетесь перейти, заставляет меня подозревать, что не весь контент загружается при отправке простого запроса get через модуль запросов. Другими словами, кажется вероятным, что некоторые компоненты на сайте, такие как упомянутый вами нижний колонтитул, загружаются асинхронно с 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)
0 голосов
/ 01 марта 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("traiteurcheminfaisant@hotmail.com"))
except:
    print("Cannot open webpage")


...