G G*_*ill 25 web-crawler scrapy
我想使用scrapy来抓取网页.有没有办法从终端本身传递起始URL?
在文档中给出了可以给出蜘蛛的名称或URL,但是当我给出url时它会抛出一个错误:
//我的蜘蛛的名字就是例子,但是我给的是url而不是我的蜘蛛名字(如果我给蜘蛛名字,它可以正常工作).
scrapy crawl example.com
错误:
文件"/usr/local/lib/python2.7/dist-packages/Scrapy-0.14.1-py2.7.egg/scrapy/spidermanager.py",第43行,在create raise KeyError("未找到蜘蛛:% s"%spider_name"KeyError:'找不到蜘蛛:example.com'
如何让scrapy在终端上给出的url上使用我的蜘蛛?
Sja*_*aak 51
我不太确定命令行选项.但是,你可以像这样写你的蜘蛛.
class MySpider(BaseSpider):
name = 'my_spider'
def __init__(self, *args, **kwargs):
super(MySpider, self).__init__(*args, **kwargs)
self.start_urls = [kwargs.get('start_url')]
Run Code Online (Sandbox Code Playgroud)
并开始它:
scrapy crawl my_spider -a start_url="http://some_url"
gli*_*ste 12
允许多个url参数比让Peter建议的更简单的方法是将它们作为一个字符串,用逗号分隔的URL,如下所示:
-a start_urls="http://example1.com,http://example2.com"
Run Code Online (Sandbox Code Playgroud)
在蜘蛛中你会简单地将字符串拆分为','并得到一个网址数组:
self.start_urls = kwargs.get('start_urls').split(',')
Run Code Online (Sandbox Code Playgroud)
使用scrapy解析命令。您可以使用蜘蛛解析网址。url 从命令传递。
$ scrapy parse http://www.example.com/ --spider=spider-name
Run Code Online (Sandbox Code Playgroud)
http://doc.scrapy.org/en/latest/topics/commands.html#parse
Sjaak Trekhaak 有正确的想法,这里是如何允许倍数:
class MySpider(scrapy.Spider):
"""
This spider will try to crawl whatever is passed in `start_urls` which
should be a comma-separated string of fully qualified URIs.
Example: start_urls=http://localhost,http://example.com
"""
def __init__(self, name=None, **kwargs):
if 'start_urls' in kwargs:
self.start_urls = kwargs.pop('start_urls').split(',')
super(Spider, self).__init__(name, **kwargs)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18846 次 |
| 最近记录: |