Scrapy xpath соскоб мета - PullRequest
       9

Scrapy xpath соскоб мета

0 голосов
/ 30 апреля 2018

Я соскребаю с помощью скрапа этот URL: http://quotes.toscrape.com/

отлично работает, когда я делаю:

response.xpath("//meta[@itemprop='keywords']/@content").extract()
response.xpath("//meta[@itemprop='keywords'][1]/@content").extract_first()

но когда я пытаюсь получить вторую мету из этого списка метад, используя индекс

response.xpath("//meta[@itemprop='keywords'][2]/@content").extract_first()

это не работает.

Чего мне не хватает?

Спасибо!

1 Ответ

0 голосов
/ 30 апреля 2018

Вы должны обернуть выражение перед индексом в скобках:

Вместо:

"//meta[@itemprop='keywords'][2]/@content"

Должно быть:

"(//meta[@itemprop='keywords'])[2]/@content"

Это необходимо, потому что в вашем xpath есть операторы параметров.

Вы можете проверить это:

$ scrapy shell "http://quotes.toscrape.com/"
In [1]: response.xpath("//meta[@itemprop='keywords'][2]/@content").extract_first()

In [2]: response.xpath("(//meta[@itemprop='keywords'])[2]/@content").extract_first()
Out[2]: 'abilities,choices'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...