Соскоб в Python HTML не может найти атрибут, который, как я знаю, существует? - PullRequest
0 голосов
/ 29 мая 2019

Я использую модули lxml и request и просто пытаюсь разобрать статью с новостного сайта, вот ссылка на пример статьи: https://www.thehindu.com/news/national/karnataka/kumaraswamy-congress-leaders-meet-to-discuss-cabinet-reshuffle/article27283040.ece

Если вы просматриваете основную часть статьи,Вы можете видеть, что это внутри класса div с именем "article".Я пытаюсь разобрать этот класс, чтобы разобрать статью, но я всегда выхожу пустым.Никаких ошибок или чего-либо еще, просто не найдено.

Я также пытался использовать find_all от BeautifulSoup, но все равно получилось пустым

from lxml import html
import requests

page = requests.get('https://www.thehindu.com/news/national/karnataka/kumaraswamy-congress-leaders-meet-to-discuss-cabinet-reshuffle/article27283040.ece')
tree = html.fromstring(page.content)

article = tree.xpath('//div[@class="article"]/text()')

После того, как я напечатал статью, я получил список ['\ n', '\ n', '\ n', '\ n', '\ n'], а не текст статьи.Где именно я иду не так?

1 Ответ

0 голосов
/ 29 мая 2019

Я бы использовал bs4 и имя класса в css select_one

import requests
from bs4 import BeautifulSoup as bs
page = requests.get('https://www.thehindu.com/news/national/karnataka/kumaraswamy-congress-leaders-meet-to-discuss-cabinet-reshuffle/article27283040.ece')
soup = bs(page.content, 'lxml')
print(soup.select_one('.article').text)

Если вы используете

article = tree.xpath('//div[@class="article"]//text()')

вы получаете список и по-прежнему получаете все \ n, но также и текст, который, я думаю, вы можете обработать с помощью re.sub или условной логики.

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