Добавить https: перед очищенными ссылками href? - PullRequest
1 голос
/ 13 июля 2020

Я пытаюсь очистить URL-адрес с описанием продукта и go на соответствующей странице. У меня есть

product_detail_link = product.css('.title-selling-point a::attr(href)').extract()

Этот код получит правильную ссылку:

'//product.suning.com/0000000000/11346320883.html'

Однако, поскольку перед ним нет 'http:', когда я запускаю

yield scrapy.Request(product_detail_link, callback=self.start_scraping)

, не может go перейти на соответствующую страницу. Как я могу добавить https: перед ссылкой, которую я скопировал? Я пробовал

yield scrapy.Request('https:'+product_detail_link, callback=self.start_scraping)

и

product_detail_link = 'https:'+product.css('.title-selling-point a::attr(href)').extract()

Но оба не работают, я думаю, это потому, что href не является строкой, поэтому я не могу просто добавить что-то перед ним? Есть идеи, как это исправить?

1 Ответ

1 голос
/ 13 июля 2020

Вы используете метод extract, который возвращает список ссылок вместо одной ссылки. Поэтому вам нужно l oop по всем ссылкам и добавить http или https ко всем ссылкам.

, если вам нужна одна ссылка, вы должны использовать get() или extract_first() метод

...