Как решить ошибку 403 в Scrapy: я нашел ошибку через 1 минуту ⇐ Python
-
Anonymous
Как решить ошибку 403 в Scrapy: я нашел ошибку через 1 минуту
Как устранить Ошибку 403? Код состояния HTTP не обрабатывается или не разрешен в Scrapy. Я использую приведенный ниже код после того, как через 1 минуту обнаружил Ошибку 403.
Я видел аналогичный вопрос и пытаюсь, но не могу устранить ошибку. Я изменил UserAgents:
импортировать Scrapy из Scrapy Import Spider из Scrapy Запрос на импорт из Scrapy.crawler импортировать CrawlerProcess импортировать панд как pd из режима импорта sqlalchemy.sql.functions класс GstDetails(scrapy.Spider): name = 'fetch_GST_details' разрешенные_домены = ['www.tradeindia.com'] custom_setting = { «CONCURRENT_REQUESTS»: 2, 'AUTO_THROTITLE_ENABLED': Верно, } защита start_requests (сам): # Чтение URL-адресов из текстового файла user_agent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, например Gecko) Chrome/22.0.1207.1 Safari/537.1" с open('tradeindia4.txt', 'r') в виде файла: urls = [line.strip() для строки в файле file.readlines()] # Создаём запросы для каждого URL для URL-адреса в URL-адресах: выход Scrapy.Request(url=url, обратный вызов=self.parse, заголовки=user_agent) def parse(self, ответ): # Извлекаем детали из ответа # title = response.css('title::text').get() check_gst_text = response.xpath("//p[. = 'GST NO']/text()").extract() поставщик_gst = ответ.xpath("//p[. = 'GST NO']/following-sibling::p/text()").get() поставщик_имя = ответ.xpath("//p[@class='sc-51f6a3c3-12 fJYdCO m-0 mb-3 Body4R' и начинается с(., 'Mr')]/text()").get( ) поставщик_адрес = ответ.xpath("//p[@class='sc-51f6a3c3-8 dfykse m-0 d-flex align-items-center justify-content-between mb-1 Title3']/text()"). получать() Company_name = response.xpath("//h2[@class='sc-51f6a3c3-1 evXKzr co-name']/span/text()").get() поставщик_тип = ответ.xpath("//p[. = 'Тип бизнеса']/following-sibling::p/text()").get() поставщик_детали = ответ.xpath("//p[. = 'Учреждение']/following-sibling::p/text()").get() поставщик_локация = ответ.xpath("//a[@class = 'viewMap']/@href/text()").get() member_since = response.xpath("//p[@class='sc-51f6a3c3-8 loYbBQ m-0 d-flex align-items-center mb-1 Title3' и содержит(., 'Член с момента')]/следующий -sibling::p[@class='sc-51f6a3c3-12 fJYdCO m-0 mb-3 Body4R']/text()").get() пытаться: если check_gst_text: ответ.url пытаться: если поставщик_гст: поставщик_гст еще: проходить кроме исключения как e: "" проходить ... кроме исключения как e: "" проходить урожай { «Источник страницы»: response.url, «Имя поставщика»: имя_поставщика, «Адрес поставщика»: адрес_поставщика, «Название компании»: имя_компании, «Тип поставщика»: поставщик_тип, «Сведения о поставщике»: поставщик_детали, «GST поставщика»: поставщик_gst, «Участник с»:member_since } еще: print("Нет налога на товары и услуги не найден на этом сайте") кроме исключения как e: поднять («GST нет, пожалуйста, проверьте») # Распечатайте или сохраните извлеченные данные # self.log(f'Title: {title}') # с open('a.txt', 'a+') как файлом: # file.write(f"{title}, {response.url}\n") если __name__=="__main__": процесс = CrawlerProcess({ 'FEEDS': {'GST_Output.csv': {'format': 'csv'}}, # сохранить в файле CSV, JSON или XML }) процесс.crawl(GstDetails) процесс.start()
Как устранить Ошибку 403? Код состояния HTTP не обрабатывается или не разрешен в Scrapy. Я использую приведенный ниже код после того, как через 1 минуту обнаружил Ошибку 403.
Я видел аналогичный вопрос и пытаюсь, но не могу устранить ошибку. Я изменил UserAgents:
импортировать Scrapy из Scrapy Import Spider из Scrapy Запрос на импорт из Scrapy.crawler импортировать CrawlerProcess импортировать панд как pd из режима импорта sqlalchemy.sql.functions класс GstDetails(scrapy.Spider): name = 'fetch_GST_details' разрешенные_домены = ['www.tradeindia.com'] custom_setting = { «CONCURRENT_REQUESTS»: 2, 'AUTO_THROTITLE_ENABLED': Верно, } защита start_requests (сам): # Чтение URL-адресов из текстового файла user_agent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, например Gecko) Chrome/22.0.1207.1 Safari/537.1" с open('tradeindia4.txt', 'r') в виде файла: urls = [line.strip() для строки в файле file.readlines()] # Создаём запросы для каждого URL для URL-адреса в URL-адресах: выход Scrapy.Request(url=url, обратный вызов=self.parse, заголовки=user_agent) def parse(self, ответ): # Извлекаем детали из ответа # title = response.css('title::text').get() check_gst_text = response.xpath("//p[. = 'GST NO']/text()").extract() поставщик_gst = ответ.xpath("//p[. = 'GST NO']/following-sibling::p/text()").get() поставщик_имя = ответ.xpath("//p[@class='sc-51f6a3c3-12 fJYdCO m-0 mb-3 Body4R' и начинается с(., 'Mr')]/text()").get( ) поставщик_адрес = ответ.xpath("//p[@class='sc-51f6a3c3-8 dfykse m-0 d-flex align-items-center justify-content-between mb-1 Title3']/text()"). получать() Company_name = response.xpath("//h2[@class='sc-51f6a3c3-1 evXKzr co-name']/span/text()").get() поставщик_тип = ответ.xpath("//p[. = 'Тип бизнеса']/following-sibling::p/text()").get() поставщик_детали = ответ.xpath("//p[. = 'Учреждение']/following-sibling::p/text()").get() поставщик_локация = ответ.xpath("//a[@class = 'viewMap']/@href/text()").get() member_since = response.xpath("//p[@class='sc-51f6a3c3-8 loYbBQ m-0 d-flex align-items-center mb-1 Title3' и содержит(., 'Член с момента')]/следующий -sibling::p[@class='sc-51f6a3c3-12 fJYdCO m-0 mb-3 Body4R']/text()").get() пытаться: если check_gst_text: ответ.url пытаться: если поставщик_гст: поставщик_гст еще: проходить кроме исключения как e: "" проходить ... кроме исключения как e: "" проходить урожай { «Источник страницы»: response.url, «Имя поставщика»: имя_поставщика, «Адрес поставщика»: адрес_поставщика, «Название компании»: имя_компании, «Тип поставщика»: поставщик_тип, «Сведения о поставщике»: поставщик_детали, «GST поставщика»: поставщик_gst, «Участник с»:member_since } еще: print("Нет налога на товары и услуги не найден на этом сайте") кроме исключения как e: поднять («GST нет, пожалуйста, проверьте») # Распечатайте или сохраните извлеченные данные # self.log(f'Title: {title}') # с open('a.txt', 'a+') как файлом: # file.write(f"{title}, {response.url}\n") если __name__=="__main__": процесс = CrawlerProcess({ 'FEEDS': {'GST_Output.csv': {'format': 'csv'}}, # сохранить в файле CSV, JSON или XML }) процесс.crawl(GstDetails) процесс.start()