Атрибут Scrapy Selector - PullRequest
       7

Атрибут Scrapy Selector

0 голосов
/ 24 сентября 2018

Я использую следующий веб-сайт для тестирования:

scrapy shell http://example.webscraping.com/places/default/user/login#

И проведу некоторый тест:

Ввод 1:

response.xpath('//div//[@style]/input')

Выход 1:

[<Selector xpath='//div[@style]/input' data='<input name="_next" type="hidden" value='>,  

<Selector xpath='//div[@style]/input' data='<input name="_formkey" type="hidden" val'>,  

<Selector xpath='//div[@style]/input' data='<input name="_formname" type="hidden" va'>]

Вход 2:

response.xpath('//div//@style/input')

Выход 2:

[]

Вход 3:

response.xpath('//div//@style/input') == response.xpath('//div[style]/input')

Выход 3:

True

Я хочу знать, как отличаются 1 и 2, спасибо.

1 Ответ

0 голосов
/ 24 сентября 2018

Я думаю, что вы ищете этот селектор:

response.xpath('//div[@style]/input')

Вот как это работает:

  1. выбрать все элементы div из документа (//div);
  2. для каждого из них выберите только те, которые имеют атрибут style ([@style]);
  3. выберите узлы input, которые являются потомкамиэлементы, выбранные на шаге 2 (/input).

Ваш второй селектор (//div//@style/input) не будет работать хорошо, потому что он:

  1. выбирает все div элементов со страницы (//div);
  2. выберите атрибут style для каждого потомка элементов div, выбранных на шаге 1 (//@style);
  3. выберите input узлы, которые являются прямыми потомками атрибутов style, чего не существует (/input).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...