Извлекать href, начиная с in scrapy

#python #xpath #scrapy

#python #xpath #scrapy

Вопрос:

Я пытаюсь извлечь href , начиная с magnet :

item['magnet']=response.xpath('//[@id="content"]/article/div[starts-with(@href,"magnet:")]/@href').extract()

Я получаю пустые результаты.

Заранее спасибо за любую помощь.

Комментарии:

1. Вам не хватает a ) для вашего contains . Кстати, xpath также имеет starts-with .

2. Да, спасибо, я исправил вопрос. На каждой странице есть по крайней мере один href, начинающийся с magnet, возможно, путь неверен, магнит находится в классе entry-content, но я все еще не могу получить href (результат empy, ошибок нет)

Ответ №1:

Вместо того, чтобы пытаться извлечь конкретную ссылку с magnet помощью, я предлагаю
1. Извлечь все <a> теги.
2. Отфильтруйте все ссылки, которые не содержат magnet: href атрибута in:

 def parse(self, response):
    ....
    item["magnet"] = [link for link in response.css("a::attr(href)").extract() if "magnet:" in link]
  

Комментарии:

1. Это отлично работает, спасибо. Мне просто нужно было поместить его в список, а затем взять первый -> [0]