标签: scrapy

爬行时scrapy中的错误403

这是我编写的用于抓取“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)
Run Code Online (Sandbox Code Playgroud)

运行上述程序时,我收到错误消息

2018-06-11 00: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> (referer: None) 2018-06-11 00:07:06 [scrapy.core.engine] DEBUG: Crawled (403) http://www.blablacar .in/ride-sharing/new-delhi/chandigarh> (referer: None) 2018-06-11 00:07:06 [scrapy.spidermiddlewares.httperror] INFO:忽略响应 <403 http://www.blablacar.in /ride-sharing/new-delhi/chandigarh >: HTTP 状态代码未处理或不允许 2018-06-11 00:07:06 [scrapy.core.engine] INFO: Closing spider (finished)

web-crawler scrapy web-scraping data-extraction python-3.x

-1
推荐指数
1
解决办法
4346
查看次数

我该怎么做才能解决这个错误?ImportError:没有名为requests.structures的模块

我正在尝试在python 2.7中运行scrapy项目,但我遇到了这个问题.我有其他问题,但解决了他们sudo pip install ...我在谷歌查找但无法找到任何解决这个问题.

python importerror scrapy

-3
推荐指数
1
解决办法
382
查看次数

使用中间件将重定向网址替换为原始网址后,无法以正确的方式发送请求

我使用 scrapy 创建了一个脚本来从网页中获取一些字段。登陆页面的 url 和内部页面的 url 经常被重定向,因此我创建了一个中间件来处理该重定向。然而,当我看到这篇文章时,我明白我需要return requestprocess_request()用原始网址替换重定向网址后。

meta={'dont_redirect': True,"handle_httpstatus_list": [301,302,307,429]}当请求从蜘蛛发送时,它总是存在的。

由于所有请求都没有被重定向,我尝试替换_retry()方法中的重定向网址。

def process_request(self, request, spider):
    request.headers['User-Agent'] = self.ua.random

def process_exception(self, request, exception, spider):
    return self._retry(request, spider)

def _retry(self, request, spider):
    request.dont_filter = True
    if request.meta.get('redirect_urls'):
        redirect_url = request.meta['redirect_urls'][0]
        redirected = request.replace(url=redirect_url)
        redirected.dont_filter = True
        return redirected
    return request

def process_response(self, request, response, spider):
    if response.status in [301, 302, 307, 429]:
        return self._retry(request, spider)
    return response
Run Code Online (Sandbox Code Playgroud)

问题:使用中间件将重定向的 url 替换为原始 url 后如何发送请求?

python middleware scrapy web-scraping python-3.x

-4
推荐指数
1
解决办法
618
查看次数

如何使用scrapy抓取数千个页面?

我正在爬网数千页,需要一个解决方案。每个站点都有自己的html代码-它们都是唯一的站点。没有干净的数据源或API。我希望将捕获的数据加载到某种数据库中。

如果可能的话,有什么想法可以解决吗?

python web-crawler scrapy

-6
推荐指数
1
解决办法
1427
查看次数