Подтвердить что ты не робот

Получите href, используя css selector с Scrapy

Я хочу получить значение href:

<span class="title">
  <a href="#" onclick="location.href='https://www.example.com'; return false;"></a>
</span>

Я попробовал это:

Link = Link1.css('span[class=title] a::text').extract()[0]

Но я просто получаю текст внутри <a>. Как я могу получить ссылку внутри href?

4b9b3361

Ответ 1

Что вы ищете:

Link = Link1.css('span[class=title] a::attr(href)').extract()[0]

Поскольку вы также сопоставляете атрибут span "class", вы даже можете писать

Link = Link1.css('span.title a::attr(href)').extract()[0]

Обратите внимание, что ::text псевдоэлемент и ::attr(attributename) функциональный псевдоэлемент - это НЕ стандартные селектора CSS3. Это расширения для селекторов CSS в Scrapy 0.20.


Изменить (2017-07-20): начиная с Scrapy 1.0, вы можете использовать .extract_first() вместо .extract()[0]

Link = Link1.css('span[class=title] a::attr(href)').extract_first()
Link = Link1.css('span.title a::attr(href)').extract_first()