我们一直在使用scrapy-splash
中间件通过在Splash
docker容器内运行的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-splash
在Scrapy Shell中使用?
scrapy web-scraping scrapy-shell scrapy-splash splash-js-render
我知道您可以scrapy shell -s USER_AGENT='custom user agent' 'http://www.example.com'
更改USER_AGENT
,但是如何添加请求标头?
我有一段时间安装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) 我在几个网站上使用Scrapy shell没有问题,但是当机器人(robots.txt)不允许访问网站时我发现问题.如何通过Scrapy禁用机器人检测(忽略存在)?先感谢您.
我不是在谈论Scrapy创建的项目,而是Scrapy shell命令:scrapy shell 'www.example.com'
我在使用 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) 我想使用scrapy shell
和测试url的响应数据,这需要基本的身份验证凭据.我试图检查scrapy shell文档,但我找不到它.
我试过scrapy shell 'http://user:pwd@abc.com'
但它没有用.有谁知道我怎么能实现它?
web-crawler basic-authentication scrapy python-2.7 scrapy-shell
我正在学习 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) 在 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) 我找不到解决以下问题的方法.我正在使用Scrapy(最新版本),我正在尝试调试蜘蛛.使用scrapy shell https://jigsaw.w3.org/HTTP/300/301.html
- >它不遵循重定向(它使用默认的蜘蛛来获取数据).如果我正在运行我的蜘蛛它跟随301 - 但我无法调试.
如何使shell遵循301以允许调试最终页面?
我正在尝试废弃一个网站,但在运行脚本时,出现以下错误
'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) 当我尝试抓取某个网站(同时使用蜘蛛和外壳)时,出现以下错误:
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 访问该站点,因此这不是网络或连接问题。
也许有人可以给我一个提示,我该如何解决这个问题?
我遵循了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 上的尝试得到了相同的结果。
我不知道还能尝试什么,你能看到选择器中的任何拼写错误吗?
我正在尝试向 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) scrapy-shell ×13
scrapy ×11
python ×7
web-scraping ×7
python-3.x ×2
web-crawler ×2
form-data ×1
macos ×1
python-2.7 ×1
robots.txt ×1
shell ×1
xpath ×1