Как получить значение из href в структуре HTML

#python #scrapy

Вопрос:

Я использую следующий код для получения значений с сайта

 import scrapy

class scraping(scrapy.Spider):
    name = 'NewsSpider'
    start_urls = ['https://www.uol.com.br/']

    def parse(self, response):
        news = response.xpath('//article')
        for n in news:
            print({
                'Link': n.xpath("//a[@class='hyperlink headlineSub__link']").get(),
                'Title': n.xpath('//a/div/h3/text()').get(),
            })
 

В разделе «Ссылка» я получаю много информации, но я хочу получить только ссылку внутри href, можно ли получить только эту информацию?

Ответ №1:

У меня есть образец того, как я делаю то же самое. Вы должны использовать что-то вроде этого селектора:

 .css('a[href*=topic]::attr(href)')
 

a tag в моем случае было нечто подобное <a ... href="topic/1321343">something</a> .
Ключ в том, чтобы a::attr(href)
проанализируйте свой ответ и сделайте его как можно меньшим и получите желаемое значение href.

Это мое решение для проекта по удалению статей Microsoft Academia. Связанная строка получает элементы в разделе «Связанные темы».

Вот еще один пример:

 <span class="title">
  <a href="https://www.example.com"></a>
</span>
 

парс по:

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