Очистка веб-сайта с помощью Python, как мне узнать, на что ссылаться в html?

#python #html #class #beautifulsoup

#python #HTML #класс #beautifulsoup

Вопрос:

Я полный новичок, который создавал только базовые проекты на Python. Прямо сейчас я создаю скребок на Python с помощью bs4, чтобы помочь мне читать истории успеха с веб-сайта. Все эти истории успеха находятся в таблице, поэтому я подумал, что найду html-тег с надписью table, который будет охватывать всю таблицу.

Однако все это просто <div и <span class , и когда я использую soup.find(«div») или («span»), он возвращает только одно слово «div» или «span». Это то, что у меня есть до сих пор, и я знаю, что это неправильно или настроено неправильно, но я слишком неопытен, чтобы понять, почему.

 from bs4 import BeautifulSoup
from urllib.request import Request, urlopen
import requests
req = Request('https://www.calix.com/about-calix/success-stories.html', headers={'User-Agent': 'Mozilla/5.0'})
webpage = urlopen(req).read()
soup = BeautifulSoup(webpage, "lxml")
soup.find("div", {"id": "content-calix-en-site-prod-home-about-calix-success-stories-jcr-content"})
print('div')
 

Я просмотрел несколько руководств по использованию bs4, и я успешно очистил базовые веб-сайты, но все, что я могу сделать для этого, это получить ВЕСЬ html, а не те фрагменты, которые мне нужны (только истории успеха).

Ответ №1:

При печати 'div' убедитесь, что вы печатаете soup, поскольку soup обновляется всякий раз, когда вы что-то в нем находите.

Вам следует взглянуть на документацию bs4.

Ответ №2:

 soup.find("div", {"id": "content-calix-en-site-prod-home-about-calix-success-stories-jcr-content"})
 

Здесь вы вызываете soup.find() , но не сохраняете результаты в переменную, поэтому результаты теряются.

 print('div')
 

И здесь вы печатаете литеральную строку div . Я не думаю, что это то, что вы имели в виду.

Попробуйте что-то вроде этого:

 div = soup.find("div", {"id": "..."})
print(div)
 

Комментарии:

1. Спасибо вам за вашу помощь! Я попробовал это, но на этот раз он вернулся с «None». Есть ли разрыв между тем, что я только что очистил, и моим новым запросом? Похоже, что он вообще не читает html.