标签: scrapy

Scrapy蜘蛛未找到错误

这是带有python 2.7的Windows 7

我在一个名为caps的目录中有一个scrapy项目(这是scrapy.cfg所在的位置)

我的蜘蛛位于caps\caps\spiders\campSpider.py中

我进入scrapy项目并尝试运行

scrapy crawl campSpider -o items.json -t json
Run Code Online (Sandbox Code Playgroud)

我收到一个错误,指出无法找到蜘蛛.班级名称 campSpider

...
    spider = self.crawler.spiders.create(spname, **opts.spargs)
  File "c:\Python27\lib\site-packages\scrapy-0.14.0.2841-py2.7-win32.egg\scrapy\spidermanager.py", l
ine 43, in create
    raise KeyError("Spider not found: %s" % spider_name)
KeyError: 'Spider not found: campSpider'
Run Code Online (Sandbox Code Playgroud)

我错过了一些配置项吗?

python scrapy

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

Scrapy抛出ImportError:无法导入名称xmlrpc_client

通过pip安装Scrapy后,有Python 2.7.10:

scrapy
Traceback (most recent call last):
File "/usr/local/bin/scrapy", line 7, in <module>
from scrapy.cmdline import execute
File "/Library/Python/2.7/site-packages/scrapy/__init__.py", line 48,  
in <module>
from scrapy.spiders import Spider
File "/Library/Python/2.7/site-packages/scrapy/spiders/__init__.py",    
line 10, in <module>
from scrapy.http import Request
File "/Library/Python/2.7/site-packages/scrapy/http/__init__.py", line   
12, in <module>
from scrapy.http.request.rpc import XmlRpcRequest
File "/Library/Python/2.7/site-packages/scrapy/http/request/rpc.py",  
line 7, in <module>
from six.moves import xmlrpc_client as xmlrpclib
ImportError: cannot import name xmlrpc_client
Run Code Online (Sandbox Code Playgroud)

但我可以导入模块:

Python 2.7.10 (default, Jun 10 2015, 19:42:47) 
[GCC 4.2.1 Compatible Apple LLVM …
Run Code Online (Sandbox Code Playgroud)

python scrapy python-2.7

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

强迫我的scrapy蜘蛛停止爬行

如果条件为真,则有可能在特定情况下停止抓取(例如scrap_item_id == predefine_value).我的问题类似于Scrapy - 如何识别已经刮掉的网址,但是我想在发现最后一个被抓住的项目后"强迫"我的scrapy蜘蛛停止爬行.

python scrapy

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

Scrapy:关注链接以获取其他商品数据?

我没有特定的代码问题我只是不确定如何使用Scrapy框架在逻辑上处理以下问题:

我想要抓取的数据结构通常是每个项目的表格行.直截了当,对吧?

最终,我想要删除每一行的标题,截止日期详细信息. 标题截止日期可立即在页面上找到...

但是细节本身不在表格中 - 而是指向包含细节的页面的链接(如果这里没有意义,那么这是一个表格):

|-------------------------------------------------|
|             Title              |    Due Date    |
|-------------------------------------------------|
| Job Title (Clickable Link)     |    1/1/2012    |
| Other Job (Link)               |    3/2/2012    |
|--------------------------------|----------------|
Run Code Online (Sandbox Code Playgroud)

即使在阅读了Scrapy文档的CrawlSpider部分之后,我恐怕仍然不知道如何使用回调和请求在逻辑上传递项目.

callback hyperlink scrapy

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

初学者通过Python学习屏幕抓取的最佳方式

这可能是难以回答的问题之一,但这里有:

我不认为我的自编程员 - 但我想:-)我已经学会了R,因为我厌倦了spss,而且因为一位朋友向我介绍了这种语言 - 所以我不是一个完全陌生的人编程逻辑.

现在我想学习python - 主要是做屏幕抓取和文本分析,还用于用Pylons或Django编写webapps.

那么:我应该如何学习使用python进行屏幕刮擦?我开始经历那些杂乱无章的文档,但我觉得很多"魔术"正在进行 - 毕竟 - 我正在努力学习,而不仅仅是做.

另一方面:没有理由重新发明轮子,如果Scrapy要屏蔽Django对网页的影响,那么毕竟值得直接进入Scrapy.你怎么看?

哦 - 顺便说一句:屏幕抓取的那种:我想要报道网站(即相当复杂和大的)来提及政治家等等 - 这意味着我需要每天,递增和递归地刮 - 我需要记录结果进入各种各样的数据库 - 这引出了一个奖励问题:每个人都在谈论非SQL数据库.我是否应该立即学会使用例如mongoDB(我认为我不需要强烈的一致性),或者我想做什么是愚蠢的?

感谢您的任何想法 - 如果这是一般被认为是一个编程问题,我道歉.

python lxml screen-scraping beautifulsoup scrapy

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

在Scrapy中使用经过身份验证的会话进行爬网

在我之前的问题中,我对我的问题并不是非常具体(使用Scrapy进行经过身份验证的会话),希望能够从更一般的答案中推断出解决方案.我应该更喜欢使用这个词crawling.

所以,到目前为止我的代码是:

class MySpider(CrawlSpider):
    name = 'myspider'
    allowed_domains = ['domain.com']
    start_urls = ['http://www.domain.com/login/']

    rules = (
        Rule(SgmlLinkExtractor(allow=r'-\w+.html$'), callback='parse_item', follow=True),
    )

    def parse(self, response):
        hxs = HtmlXPathSelector(response)
        if not "Hi Herman" in response.body:
            return self.login(response)
        else:
            return self.parse_item(response)

    def login(self, response):
        return [FormRequest.from_response(response,
                    formdata={'name': 'herman', 'password': 'password'},
                    callback=self.parse)]


    def parse_item(self, response):
        i['url'] = response.url

        # ... do more things

        return i
Run Code Online (Sandbox Code Playgroud)

如您所见,我访问的第一页是登录页面.如果我还没有通过身份验证(在parse函数中),我会调用我的自定义login函数,该函数会发布到登录表单.然后,如果我验证,我想继续爬行.

问题是parse我试图覆盖的功能以便登录,现在不再进行必要的调用来刮掉任何其他页面(我假设).而且我不确定如何保存我创建的项目.

以前有人做过这样的事吗?(验证,然后爬行,使用a CrawlSpider)任何帮助将不胜感激.

python scrapy

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

scrapy文本编码

这是我的蜘蛛

from scrapy.contrib.spiders import CrawlSpider,Rule
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
from scrapy.selector import HtmlXPathSelector
from vrisko.items import VriskoItem

class vriskoSpider(CrawlSpider):
    name = 'vrisko'
    allowed_domains = ['vrisko.gr']
    start_urls = ['http://www.vrisko.gr/search/%CE%B3%CE%B9%CE%B1%CF%84%CF%81%CE%BF%CF%82/%CE%BA%CE%BF%CF%81%CE%B4%CE%B5%CE%BB%CE%B9%CE%BF']
    rules = (Rule(SgmlLinkExtractor(allow=('\?page=\d')),'parse_start_url',follow=True),)

    def parse_start_url(self, response):
        hxs = HtmlXPathSelector(response)
        vriskoit = VriskoItem()
        vriskoit['eponimia'] = hxs.select("//a[@itemprop='name']/text()").extract()
        vriskoit['address'] = hxs.select("//div[@class='results_address_class']/text()").extract()
        return vriskoit
Run Code Online (Sandbox Code Playgroud)

我的问题是返回的字符串是unicode,我想将它们编码为utf-8.我不知道哪种方法最好.我尝试了几种没有结果的方法.

先感谢您!

scrapy

30
推荐指数
3
解决办法
4万
查看次数

Scrapy在解析时获取请求URL

如何在Scrapy的parse()功能中获取请求URL ?我有很多网址start_urls,其中一些将我的蜘蛛重定向到主页,结果我有一个空项目.所以我需要item['start_url'] = request.url存储这些网址的东西.我正在使用BaseSpider.

scrapy python-2.7 scrapyd

30
推荐指数
4
解决办法
3万
查看次数

在芹菜任务中运行Scrapy蜘蛛

这不再适用了,scrapy的API已经改变了.

现在文档的功能是" 从脚本运行Scrapy "但我得到ReactorNotRestartable错误.

我的任务:

from celery import Task

from twisted.internet import reactor

from scrapy.crawler import Crawler
from scrapy import log, signals
from scrapy.utils.project import get_project_settings

from .spiders import MySpider



class MyTask(Task):
    def run(self, *args, **kwargs):
        spider = MySpider
        settings = get_project_settings()
        crawler = Crawler(settings)
        crawler.signals.connect(reactor.stop, signal=signals.spider_closed)
        crawler.configure()
        crawler.crawl(spider)
        crawler.start()

        log.start()
        reactor.run()
Run Code Online (Sandbox Code Playgroud)

twisted scrapy celery

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

python没有名为service_identity的模块

我试图更新scrapy,当我试图检查版本时,我得到了以下错误

C:\Windows\system32>scrapy version -v
:0: UserWarning: You do not have a working installation of the service_identity
module: 'No module named service_identity'.  Please install it from <https://pyp
i.python.org/pypi/service_identity> and make sure all of its dependencies are sa
tisfied.  Without the service_identity module and a recent enough pyOpenSSL to s
upport it, Twisted can perform only rudimentary TLS client hostname verification
.  Many valid certificate/hostname mappings may be rejected.
Scrapy  : 0.22.2
lxml    : 3.2.3.0
libxml2 : 2.9.0
Twisted : 14.0.0
Python …
Run Code Online (Sandbox Code Playgroud)

python scrapy python-2.7

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