ошибка 403 в скрапе при ползании - PullRequest
0 голосов
/ 10 июня 2018

Вот код, который я написал, чтобы очистить веб-сайт «Blablacar».

# -*- coding: utf-8 -*-
import scrapy


class BlablaSpider(scrapy.Spider):
    name = 'blabla'

    allowed_domains = ['blablacar.in']
    start_urls = ['http://www.blablacar.in/ride-sharing/new-delhi/chandigarh']

    def parse(self, response):
        print(response.text)

При выполнении вышеизложенного, я получаю ошибку как

2018-06-1100:07:05 [scrapy.extensions.telnet] ОТЛАДКА: консоль Telnet прослушивает 127.0.0.1:6023 2018-06-11 00:07:06 [scrapy.core.engine] ОТЛАДКА: сканировано (403) http://www.blablacar.in/robots.txt> (реферер: отсутствует) 2018-06-11 00:07:06 [scrapy.core.engine] ОТЛАДКА: сканировано (403) http://www.blablacar.in/ride-sharing/new-delhi/chandigarh> (реферер: отсутствует) 2018-06-11 00:07:06 [scrapy.spidermiddlewares.httperror] ИНФОРМАЦИЯ: Игнорирование ответа <403 <a href="http://www.blablacar.in/ride-sharing/new-delhi/chandigarh" rel="nofollow noreferrer">http://www.blablacar.in/ride-sharing/new-delhi/chandigarh>: Код состояния HTTP не обрабатывается или не разрешен 2018-06-11 00:07:06 [scrapy.core.engine] ИНФОРМАЦИЯ: Закрытие паука (завершено)

Ответы [ 3 ]

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

Вам необходимо настроить агент пользователя.Я запустил ваш код на своем сайте с настроенным агентом пользователя и получил код состояния 200.

1 Поместите рядом с settings.py новый файл с именем utils.py

import random

user_agent_list = [
    # Chrome
    'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36',
    'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36',
    'Mozilla/5.0 (Windows NT 5.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36',
    'Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36',
    'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36',
    'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36',
    'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36',
    'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36',
    'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36',
    'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36',
    'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.116 Safari/537.36'
    # Firefox
    'Mozilla/4.0 (compatible; MSIE 9.0; Windows NT 6.1)',
    'Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko',
    'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)',
    'Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko',
    'Mozilla/5.0 (Windows NT 6.2; WOW64; Trident/7.0; rv:11.0) like Gecko',
    'Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko',
    'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.0; Trident/5.0)',
    'Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko',
    'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)',
    'Mozilla/5.0 (Windows NT 6.1; Win64; x64; Trident/7.0; rv:11.0) like Gecko',
    'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)',
    'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)',
    'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)',
    'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:59.0) Gecko/20100101 Firefox/59.0'
]


def get_random_agent():
    return random.choice(user_agent_list)

2 Добавить вваш файл settings.py:

from <SCRAPY_PROJECT>.utils import get_random_agent

USER_AGENT = get_random_agent()
0 голосов
/ 19 июля 2019

Согласно документации Scrapy , вы можете использовать атрибут паука handle_httpstatus_list.

В вашем случае:

class BlablaSpider(scrapy.Spider):
    name = 'blabla'

    allowed_domains = ['blablacar.in']
    start_urls = ['http://www.blablacar.in/ride-sharing/new-delhi/chandigarh']
    handle_httpstatus_list = [403]
0 голосов
/ 10 июня 2018

Обычно в html ошибка 403 означает, что у вас нет доступа к странице.

Повторите попытку с другим веб-сайтом, если он не показывает ту же ошибку, то это, вероятно, вызвано ответом веб-сайтов.

...