извлечь 5000 деталей езды с сайта Blablacar - PullRequest
0 голосов
/ 11 июня 2018

Может кто-нибудь, пожалуйста, помогите мне извлечь детали райдера из URL-адреса автомобиля Blabla или, пожалуйста, предложите какую-нибудь идею для веб-поиска

Извлеките первые 5000 подробностей поездки с URL-адреса веб-сайта автомобиля Blabla

Я новичок в веб-поиске и Python. Так что любезно кто-нибудь подскажет, как выполнить задачу

1 Ответ

0 голосов
/ 11 июня 2018

Во-первых, вы всегда должны думать, где находится ваша начальная точка очистки.В этом случае https://www.blablacar.in/search-car-sharing выглядит довольно хорошо, так как есть ссылки на самые популярные маршруты.

Вот конвейер, по которому вы, возможно, захотите следовать:

  • Объявитеspider.
  • Установите USER_AGENTsettings.py) на что-то нестандартное, чтобы не получать 403 ответов.
  • Установите DOWNLOAD_DELAY на что-то вроде 0.5 иличтобы не быть забаненным (может потребоваться увеличить значение).
  • Добавить начальную точку к пауку: start_urls = ['https://www.blablacar.in/search-car-sharing']
  • Добавить метод parse, который будет выдавать запросы на маршрутизацию.страниц.
  • Добавьте метод parse_route, который будет выдавать информацию о поездках и следовать нумерации страниц.

Вот как может выглядеть метод parse:

def parse(self, response):
    for a_tag in response.css('.search-empty__meeting-points a'):
        yield response.follow(a_tag, self.parse_route)

А вот parse_route пример, который анализирует имя и дату поездки:

def parse_route(self, response):
    for trip in response.css('.trip-search-results li'):
        item = {}
        item['name'] = trip.css('.ProfileCard-info--name::text').extract_first().strip()
        item['date'] = trip.css('.description .time::attr(content)').extract_first()
        yield item

    for a_tag in response.css('.pagination .next:not(.disabled) a'):
        yield response.follow(a_tag, self.parse_route)

Надеюсь, это даст вам интуицию о том, как решить задачу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...