Reddit Scrapy Xpath несоответствия - PullRequest
0 голосов
/ 22 октября 2018

Я хочу извлечь следующую информацию из каждого сообщения reddit:

заголовок сообщения: (содержится в следующем примере xpath):

<h2 class="s56cc5r-0 kTdpMJ">Japanese Weekly Tournament "Legacy Weekly Japan#142" is now live!</h2>

ссылка на сообщение:

<a data-click-id="body" class="SQnoC3ObvgnGjWt90zD9Z" href="/r/starcraft/comments/9q30xf/japanese_weekly_tournament_legacy_weekly_japan142/"><h2 class="s56cc5r-0 kTdpMJ">Japanese Weekly Tournament "Legacy Weekly Japan#142" is now live!</h2></a>

пользователь, который разместил: (содержится в следующем xpath в качестве примера):

<a class="_2tbHP6ZydRpjI44J3syuqC s1461iz-1 gWXVVu" href="/user/Horiken">u/Horiken</a>

комментарий:

<a rel="nofollow" data-click-id="comments" data-test-id="comments-page-link-num-comments" class="_1UoeAeSRhOKSNdY_h3iS1O _1Hw7tY9pMr-T1F4P1C-xNU _2qww3J5KKzsD7e5DO0BvvU" href="/r/starcraft/comments/9q30xf/japanese_weekly_tournament_legacy_weekly_japan142/"><i class="icon icon-comment _3ch9jJ0painNf41PmU4F9i _3DVrpDrMM9NLT6TlsTUMxC" role="presentation"></i><span class="FHCV02u6Cp2zYL0fhQPsO">1 comment</span></a>

Все они содержатся в разделе divэлементы с атрибутом id, поэтому я запускаю свой xpath следующим образом:

".// div [@id]"

, но когда я делаю (для URL-адреса сообщения, например):

".// div [@id] // a [@ data-click-id]"

Я получаю пустой результат назад.

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

1 Ответ

0 голосов
/ 27 октября 2018

Указание атрибута id недостаточно.Вы хотите указать, что такое id и какие другие атрибуты.

Для URL-адреса публикации, если значение id предка равно spam, сделайте следующее:

response.xpath('.//div[@id="spam"]//a[@data-click-id="body"]').extract_first()

Этот документ является моим кратким справочным материалом для краткого справочного руководства по XPATH.

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