Почему html в view-source отличается от того, что я вижу в терминале, когда я вызываю prettify ()? - PullRequest
0 голосов
/ 05 мая 2018

Я решил просмотреть исходный код веб-сайта и выбрал класс, который «расширен» ( Я нашел его, используя view-source , prettify () показывает другой код). Я хотел распечатать все его содержимое с этим кодом:

import requests
from bs4 import BeautifulSoup

page = requests.get("https://www.quora.com/How-can-I-write-a-bot-using-Python")
soup = BeautifulSoup(page.content, 'html.parser')
print soup.find_all(class_='expanded')

но он просто печатает:

[]

Пожалуйста, помогите мне определить, что не так.

Я уже видел эту ветку и пытался следовать сказанному в ответе, но это не помогло мне, так как эта ошибка появляется в терминале:

bs4.FeatureNotFound: Не удалось найти конструктор дерева с требуемыми функциями: lxml. Вам нужно установить библиотеку парсера?

1 Ответ

0 голосов
/ 05 мая 2018

Я посмотрел на рассматриваемый сайт, и единственный подобный класс был фактически назван ui_qtext_expanded

Когда вы используете findAll / find_all, вам нужно выполнить итерацию по нему, чтобы вернуть каждый элемент, поскольку он представляет собой список элементов, используя .text .. То есть, если вам нужен текст, а не фактический HTML.

import requests
from bs4 import BeautifulSoup

page = requests.get("https://www.quora.com/How-can-I-write-a-bot-using-Python")
soup = BeautifulSoup(page.content, 'html.parser')
res = soup.find_all(class_='ui_qtext_expanded')
for i in res:
    print i.text

Начало вывода по вашей ссылке

A combination of mechanize, Requests and BeautifulSoup works pretty good for the basic stuff.Learn about mechanize here.Mechanize is sufficient for basic form filling, form submission and that sort of stuff, but for real browser emulation (like dealing with Javascript rendered HTML) you should look into selenium.

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