标签: scrapy-shell

Scrapy壳和Scrapy飞溅

我们一直在使用scrapy-splash中间件通过在Splashdocker容器内运行的javascript引擎传递已删除的HTML源代码.

如果我们想在spider中使用Splash,我们配置几个必需的项目设置并产生一个Request指定特定的meta参数:

yield Request(url, self.parse_result, meta={
    'splash': {
        'args': {
            # set rendering arguments here
            'html': 1,
            'png': 1,

            # 'url' is prefilled from request url
        },

        # optional parameters
        'endpoint': 'render.json',  # optional; default is render.json
        'splash_url': '<url>',      # overrides SPLASH_URL
        'slot_policy': scrapyjs.SlotPolicy.PER_DOMAIN,
    }
})
Run Code Online (Sandbox Code Playgroud)

这有助于记录.但是,我们如何scrapy-splashScrapy Shell中使用

scrapy web-scraping scrapy-shell scrapy-splash splash-js-render

16
推荐指数
2
解决办法
7529
查看次数

设置scrapy shell请求的标头

我知道您可以scrapy shell -s USER_AGENT='custom user agent' 'http://www.example.com'更改USER_AGENT,但是如何添加请求标头?

scrapy scrapy-shell

15
推荐指数
1
解决办法
7401
查看次数

为什么我在scrapy中得到这个错误 - python3.7语法无效

我有一段时间安装scrapy.我把它安装在我的Mac上,但是在运行教程时遇到了这个错误:

Virtualenvs/scrapy_env/lib/python3.7/site-packages/twisted/conch/manhole.py", line 154
    def write(self, data, async=False):
                              ^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

据我所知,我正在使用最新版本的所有内容.实现这一目标一直很痛苦.啧.OS High Sierra 10.13.3 python 3.7安装了ipython我已经更新了我能想到的一切.终端线是:

scrapy shell http://quotes.toscrape.com/random
Run Code Online (Sandbox Code Playgroud)

或者scrapy shell "http://quotes.toscrape.com/random" 甚至尝试单引号.任何帮助都会很棒!

这是完整的日志:

(scrapy_env) XXX-MacBook-Pro:Virtualenvs ComputerName$ scrapy shell http://quotes.toscrape.com/random
2018-02-19 06:38:53 [scrapy.utils.log] INFO: Scrapy 1.5.0 started (bot: scrapybot)
2018-02-19 06:38:53 [scrapy.utils.log] INFO: Versions: lxml 3.6.2.0, libxml2 2.9.4, cssselect 1.0.3, parsel 1.4.0, w3lib 1.19.0, Twisted 17.9.0, Python 3.7.0a2 (v3.7.0a2:f7ac4fe52a, Oct 16 2017, 21:11:18) - [GCC 4.2.1 (Apple Inc. build 5666) (dot 3)], pyOpenSSL 17.5.0 (OpenSSL 1.0.2n  7 …
Run Code Online (Sandbox Code Playgroud)

python macos python-3.x scrapy-shell

10
推荐指数
2
解决办法
4064
查看次数

如何在启动scrapy shell时禁用robots.txt?

我在几个网站上使用Scrapy shell没有问题,但是当机器人(robots.txt)不允许访问网站时我发现问题.如何通过Scrapy禁用机器人检测(忽略存在)?先感谢您. 我不是在谈论Scrapy创建的项目,而是Scrapy shell命令:scrapy shell 'www.example.com'

python robots.txt web-crawler scrapy scrapy-shell

6
推荐指数
2
解决办法
5417
查看次数

Scrapy shell返回无响应

我在使用 scrapy 抓取网站时遇到了一些问题。我按照 scrapy 的教程学习如何抓取网站,我有兴趣在网站“ https://www.leboncoin.fr ”上测试它,但蜘蛛不起作用。所以,我尝试过:

scrapy shell 'https://www.leboncoin.fr'
Run Code Online (Sandbox Code Playgroud)

但是,我没有得到该网站的回应。

$ scrapy shell 'https://www.leboncoin.fr'
2017-05-16 08:31:26 [scrapy.utils.log] INFO: Scrapy 1.3.3 started (bot: all_cote)
2017-05-16 08:31:26 [scrapy.utils.log] INFO: Overridden settings: {'BOT_NAME': 'all_cote', 'DUPEFILTER_CLASS':    'scrapy.dupefilters.BaseDupeFilter', 'LOGSTATS_INTERVAL': 0,   'NEWSPIDER_MODULE': 'all_cote.spiders', 'ROBOTSTXT_OBEY': True, 'SPIDER_MODULES': ['all_cote.spiders']}
2017-05-16 08:31:27 [scrapy.middleware] INFO: Enabled extensions:
['scrapy.extensions.corestats.CoreStats',
 'scrapy.extensions.telnet.TelnetConsole']
2017-05-16 08:31:27 [scrapy.middleware] INFO: Enabled downloader middlewares:
['scrapy.downloadermiddlewares.robotstxt.RobotsTxtMiddleware',
 'scrapy.downloadermiddlewares.httpauth.HttpAuthMiddleware',
 'scrapy.downloadermiddlewares.downloadtimeout.DownloadTimeoutMiddleware',
 'scrapy.downloadermiddlewares.defaultheaders.DefaultHeadersMiddleware',
 'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware',
 'scrapy.downloadermiddlewares.retry.RetryMiddleware',
 'scrapy.downloadermiddlewares.redirect.MetaRefreshMiddleware',
 'scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware',
 'scrapy.downloadermiddlewares.redirect.RedirectMiddleware',
 'scrapy.downloadermiddlewares.cookies.CookiesMiddleware',
 'scrapy.downloadermiddlewares.stats.DownloaderStats']
2017-05-16 08:31:27 [scrapy.middleware] INFO: Enabled spider middlewares:
['scrapy.spidermiddlewares.httperror.HttpErrorMiddleware',
 'scrapy.spidermiddlewares.offsite.OffsiteMiddleware',
 'scrapy.spidermiddlewares.referer.RefererMiddleware',
 'scrapy.spidermiddlewares.urllength.UrlLengthMiddleware',
 'scrapy.spidermiddlewares.depth.DepthMiddleware'] …
Run Code Online (Sandbox Code Playgroud)

python attributeerror python-3.x scrapy-shell

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

如何使用url和基本身份验证凭证scrapy shell?

我想使用scrapy shell和测试url的响应数据,这需要基本的身份验证凭据.我试图检查scrapy shell文档,但我找不到它.

我试过scrapy shell 'http://user:pwd@abc.com'但它没有用.有谁知道我怎么能实现它?

web-crawler basic-authentication scrapy python-2.7 scrapy-shell

5
推荐指数
2
解决办法
2356
查看次数

Scrapy ImagesPipeline 警告:文件(未知错误):从 &lt;GET 下载图像时出错

我正在学习 Python 和 Scrapy,我正在学习如何使用它下载图像。我现在有点卡住了,我无法弄清楚真正的问题是什么。

我在运行蜘蛛时收到此错误消息

<None>: Unsupported URL scheme '': no handler available for that scheme
Run Code Online (Sandbox Code Playgroud)

[imageflip] WARNING: File (unknown-error): Error downloading image from <GET
Run Code Online (Sandbox Code Playgroud)

请在此处查看我的 pipelines.py

import scrapy
from scrapy.contrib.pipeline.images import ImagesPipeline
from scrapy.exceptions import DropItem


class PriceoflipkartPipeline(object):
    def process_item(self, item, spider):
        return item

class MyImagesPipeline(ImagesPipeline):

def get_media_requests(self, item, info):
    for image_url in item['image_urls']:
        yield scrapy.Request(image_url)

def item_completed(self, results, item, info):
    image_paths = [x['path'] for ok, x in results if ok]
    if not image_paths:
        raise DropItem("Item contains no …
Run Code Online (Sandbox Code Playgroud)

python scrapy scrapy-spider scrapy-shell

5
推荐指数
1
解决办法
1182
查看次数

针对本地文件的 Scrapy shell

在 Scrapy 1.0 之前,我可以非常简单地针对本地文件运行 Scrapy Shell:

$ scrapy shell index.html
Run Code Online (Sandbox Code Playgroud)

升级到1.0.3后,开始报错:

$ scrapy shell index.html
2015-10-12 15:32:59 [scrapy] INFO: Scrapy 1.0.3 started (bot: scrapybot)
2015-10-12 15:32:59 [scrapy] INFO: Optional features available: ssl, http11, boto
2015-10-12 15:32:59 [scrapy] INFO: Overridden settings: {'LOGSTATS_INTERVAL': 0}
Traceback (most recent call last):
  File "/Users/user/.virtualenvs/so/bin/scrapy", line 11, in <module>
    sys.exit(execute())
  File "/Users/user/.virtualenvs/so/lib/python2.7/site-packages/scrapy/cmdline.py", line 143, in execute
    _run_print_help(parser, _run_command, cmd, args, opts)
  File "/Users/user/.virtualenvs/so/lib/python2.7/site-packages/scrapy/cmdline.py", line 89, in _run_print_help
    func(*a, **kw)
  File "/Users/user/.virtualenvs/so/lib/python2.7/site-packages/scrapy/cmdline.py", line 150, in _run_command
    cmd.run(args, …
Run Code Online (Sandbox Code Playgroud)

python shell scrapy web-scraping scrapy-shell

5
推荐指数
1
解决办法
3427
查看次数

Scrapy - 301重定向在shell中

我找不到解决以下问题的方法.我正在使用Scrapy(最新版本),我正在尝试调试蜘蛛.使用scrapy shell https://jigsaw.w3.org/HTTP/300/301.html- >它不遵循重定向(它使用默认的蜘蛛来获取数据).如果我正在运行我的蜘蛛它跟随301 - 但我无法调试.

如何使shell遵循301以允许调试最终页面?

python scrapy web-scraping scrapy-shell

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

Scrapy 错误:'不支持:不支持的 URL 方案'':没有可用于该方案的处理程序'

我正在尝试废弃一个网站,但在运行脚本时,出现以下错误

'NotSupported:不支持的 URL 方案'':没有可用于该方案的处理程序'

如果规则没有错误,为什么会出现这种情况以及您的建议是什么,请帮助我。多谢。

代码在这里:

from scrapy.spiders import CrawlSpider, Rule, BaseSpider
from scrapy.linkextractors import LinkExtractor 
class FellowSearch(CrawlSpider):
    name ='fellow'
    allowed_domains = ['emma.cam.ac.uk']
    start_urls = [' https://www.emma.cam.ac.uk/']

    rules =(Rule(LinkExtractor(allow=(r'\?id=\d+$')),callback='parse_obj', follow=True),)

    def parse_obj(self, response):
        print response.url
Run Code Online (Sandbox Code Playgroud)

scrapy web-scraping scrapy-shell

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

Scrapy Shell:twisted.internet.error.ConnectionLost 尽管设置了 USER_AGENT

当我尝试抓取某个网站(同时使用蜘蛛和外壳)时,出现以下错误:

twisted.web._newclient.ResponseNeverReceived: [<twisted.python.failure.Failure twisted.internet.error.ConnectionLost: Connection to the other side was lost in a non-clean fashion.>]
Run Code Online (Sandbox Code Playgroud)

我发现当没有设置用户代理时会发生这种情况。但是手动设置后,我仍然遇到同样的错误。

你可以在这里看到scrapy shell的整个输出:http ://pastebin.com/ZFJZ2UXe

笔记:

我没有代理,我可以通过scrapy shell访问其他站点而没有问题。我也可以使用 Chrome 访问该站点,因此这不是网络或连接问题。

也许有人可以给我一个提示,我该如何解决这个问题?

scrapy web-scraping scrapy-spider scrapy-shell

2
推荐指数
1
解决办法
2261
查看次数

scrapy xpath 按类名选择元素

我遵循了How can I find an element by CSS class with XPath? 它提供了用于按类名选择元素的选择器。问题是,当我使用它时,它会检索到一个空结果“[]”,而且我实际上知道在馈送到 scrapy shell 的 url 中有一个名为“zoomWindow”的 div。

在此输入图像描述

我的尝试:

scrapy shell "http://www.niceicdirect.com/epages/NICShop.sf/secAlIVFGjzzf2/?ObjectPath=/Shops/NICShop/Products/5696"
response.xpath("//*[contains(@class, 'zoomWindow')]")
Run Code Online (Sandbox Code Playgroud)

我查看了许多提供各种选择器的资源。就我而言,该元素只有一个类,因此我使用了使用“concat”的版本,但不起作用并被丢弃。

我在虚拟机中安装了 ubuntu 和 scrapy,只是为了确保这不是我在 Windows 上安装的错误,但我在 ubuntu 上的尝试得到了相同的结果。

我不知道还能尝试什么,你能看到选择器中的任何拼写错误吗?

xpath scrapy web-scraping scrapy-shell

2
推荐指数
1
解决办法
1万
查看次数

Scrapy FormRequest 无法将复杂的字典作为 formdata 处理

我正在尝试向 scrapy.FormRequest 对象提供表单数据。formdata 是以下结构的字典:

{
  "param1": [
    {
      "paramA": "valueA",
      "paramB": "valueB"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

通过相当于以下代码,在scrapy shell中运行:

from scrapy import FormRequest

url = 'www.example.com'
method_post = 'POST'
formdata = <the above dict>

fr = FormRequest(url=url, method=method_post, formdata=formdata)

fetch(fr)
Run Code Online (Sandbox Code Playgroud)

作为回应,我收到以下错误:

Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/Users/chhk/.local/share/virtualenvs/project/lib/python3.6/site-packages/scrapy/http/request/form.py", line 31, in __init__
    querystr = _urlencode(items, self.encoding)
  File "/Users/chhk/.local/share/virtualenvs/project/lib/python3.6/site-packages/scrapy/http/request/form.py", line 66, in _urlencode
    for k, vs in seq
  File "/Users/chhk/.local/share/virtualenvs/project/lib/python3.6/site-packages/scrapy/http/request/form.py", line 67, in <listcomp>
    for v in …
Run Code Online (Sandbox Code Playgroud)

python form-data scrapy web-scraping scrapy-shell

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