相关疑难解决方法(0)

如何为scrapy提供URL进行爬行?

我想使用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上使用我的蜘蛛?

web-crawler scrapy

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

创建一个通用的scrapy蜘蛛

我的问题是如何做与前一个问题相同的事情,但在Scrapy 0.14中.

在一些网站上使用一个Scrapy蜘蛛

基本上,我有GUI,它采用域,关键字,标签名称等参数,我想创建一个通用的蜘蛛来抓取那些域中的那些关键字.我通过覆盖蜘蛛管理器类或动态创建蜘蛛来阅读使用旧版scrapy的冲突内容.首选哪种方法,如何实施和调用正确的解决方案?提前致谢.

这是我想要通用的代码.它还使用BeautifulSoup.我把它配对了所以希望没有删除任何关键的理解它.

class MySpider(CrawlSpider):

name = 'MySpider'
allowed_domains = ['somedomain.com', 'sub.somedomain.com']
start_urls = ['http://www.somedomain.com']

rules = (
    Rule(SgmlLinkExtractor(allow=('/pages/', ), deny=('', ))),

    Rule(SgmlLinkExtractor(allow=('/2012/03/')), callback='parse_item'),
)

def parse_item(self, response):
    contentTags = []

    soup = BeautifulSoup(response.body)

    contentTags = soup.findAll('p', itemprop="myProp")

    for contentTag in contentTags:
        matchedResult = re.search('Keyword1|Keyword2', contentTag.text)
        if matchedResult:
            print('URL Found: ' + response.url)

    pass
Run Code Online (Sandbox Code Playgroud)

python web-crawler scrapy

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

在Scrapy本地运行所有蜘蛛

有没有办法在不使用Scrapy守护进程的情况下运行Scrapy项目中的所有蜘蛛?以前有一种方法可以运行多个蜘蛛scrapy crawl,但语法被删除了,Scrapy的代码也发生了很大变化.

我尝试创建自己的命令:

from scrapy.command import ScrapyCommand
from scrapy.utils.misc import load_object
from scrapy.conf import settings

class Command(ScrapyCommand):
    requires_project = True

    def syntax(self):
        return '[options]'

    def short_desc(self):
        return 'Runs all of the spiders'

    def run(self, args, opts):
        spman_cls = load_object(settings['SPIDER_MANAGER_CLASS'])
        spiders = spman_cls.from_settings(settings)

        for spider_name in spiders.list():
            spider = self.crawler.spiders.create(spider_name)
            self.crawler.crawl(spider)

        self.crawler.start()
Run Code Online (Sandbox Code Playgroud)

但是一旦注册了蜘蛛self.crawler.crawl(),我就会得到所有其他蜘蛛的断言错误:

Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/scrapy/cmdline.py", line 138, in _run_command
    cmd.run(args, opts)
  File "/home/blender/Projects/scrapers/store_crawler/store_crawler/commands/crawlall.py", line 22, in run
    self.crawler.crawl(spider)
  File "/usr/lib/python2.7/site-packages/scrapy/crawler.py", line 47, …
Run Code Online (Sandbox Code Playgroud)

python web-crawler scrapy

13
推荐指数
4
解决办法
8115
查看次数

在一些网站上使用一个Scrapy蜘蛛

我需要创建一个用户可配置的Web蜘蛛/爬虫,我正在考虑使用Scrapy.但是,我无法对域进行硬编码并允许使用URL正则表达式:es - 这可以在GUI中进行配置.

我如何(尽可能简单)使用Scrapy创建一个蜘蛛或一组蜘蛛,其中域和允许的URL正则表达式是可动态配置的?例如,我将配置写入文件,蜘蛛以某种方式读取它.

python web-crawler scrapy

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

标签 统计

scrapy ×4

web-crawler ×4

python ×3