Scrapy - проблема с селектором CSS - PullRequest
0 голосов
/ 10 мая 2019

Я хотел бы получить ссылку, расположенную в атрибуте href, из элемента a. URL-адрес: https://www.drivy.com/location-voiture/antwerpen/bmw-serie-1-477429?address=Gare+d%27Anvers-Central&city_display_name=&country_scope=BE&distance=200&end_date=2019-05-20&end_time=18%3A30&latitude=51.2162&longitude=4.4209&start_date=2019-05-20&start_time=06%3A00

Я ищу href этого элемента:

<a class="car_owner_section" href="/users/2643273" rel="nofollow"></a>

Когда я ввожу response.css('a.car_owner_section::attr(href)').get() в терминале, я просто ничего не получаю, но элемент существует, даже когда я проверяю view(response).

Кто-нибудь знает об этой проблеме?

1 Ответ

3 голосов
/ 10 мая 2019

Сайт загружается на JavaScript, отлично работает с помощью заставки.

Вот код:

import scrapy
from scrapy_splash import SplashRequest


class ScrapyOverflow1(scrapy.Spider):
    name = "overflow1"

    def start_requests(self):
        url = 'https://www.drivy.com/location-voiture/antwerpen/bmw-serie-1-477429?address=Gare+d%27Anvers-Central&city_display_name=&country_scope=BE&distance=200&end_date=2019-05-20&end_time=18%3A30&latitude=51.2162&longitude=4.4209&start_date=2019-05-20&start_time=06%3A00'

        yield SplashRequest(url=url, callback=self.parse, args={'wait': 5})

    def parse(self, response):
        links = response.xpath('//a[@class="car_owner_section"]/@href').extract()
        print(links)

Чтобы использовать всплеск, установите всплеск, scrapy splash и запустите sudo docker run -p 8050:8050 scrapinghub/splash перед запуском паука. Вот отличная статья по установке и запуску заставки. статья о scrapy spash ... а также добавление midlewares в settings.py (также в статье) expected results Результат, как указано выше

...