Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 刮痧蜘蛛坏了_Python_Scrapy - Fatal编程技术网

Python 刮痧蜘蛛坏了

Python 刮痧蜘蛛坏了,python,scrapy,Python,Scrapy,由于到目前为止没有任何进展,我开始了一个新的项目 python scrapy-ctl.py startproject Nu 我严格按照教程进行操作,创建了文件夹和一个新的爬行器 from scrapy.contrib.spiders import CrawlSpider, Rule from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor from scrapy.selector import HtmlXPathSelec

由于到目前为止没有任何进展,我开始了一个新的项目

python scrapy-ctl.py startproject Nu
我严格按照教程进行操作,创建了文件夹和一个新的爬行器

from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
from scrapy.selector import HtmlXPathSelector
from scrapy.item import Item
from Nu.items import NuItem
from urls import u

class NuSpider(CrawlSpider):
    domain_name = "wcase"
    start_urls = ['http://www.whitecase.com/aabbas/']

    names = hxs.select('//td[@class="altRow"][1]/a/@href').re('/.a\w+')

    u = names.pop()

    rules = (Rule(SgmlLinkExtractor(allow=(u, )), callback='parse_item'),)

    def parse(self, response):
        self.log('Hi, this is an item page! %s' % response.url)

        hxs = HtmlXPathSelector(response)
        item = Item()
        item['school'] = hxs.select('//td[@class="mainColumnTDa"]').re('(?<=(JD,\s))(.*?)(\d+)')
        return item

SPIDER = NuSpider()
我明白了

其他的蜘蛛至少被斯帕奇认出来了,而这只不是。我做错了什么


谢谢你的帮助

您是否在scrapy_settings.py中的
spider_模块
列表中包含了spider


教程中没有任何地方写过你应该这样做,但你必须这样做。

我相信你有语法错误。
name=hxs…
将不起作用,因为在
hxs
对象之前没有定义


尝试运行
pythonyourproject/spider/domain.py
以获取语法错误。

这两行代码看起来像是在引起麻烦:

u = names.pop()

rules = (Rule(SgmlLinkExtractor(allow=(u, )), callback='parse_item'),)
  • 每次运行脚本时只遵循一条规则。考虑为每个URL创建一个规则。
  • 您尚未创建
    parse_项
    回调,这意味着该规则不执行任何操作。您定义的唯一回调是
    parse
    ,它更改了爬行器的默认行为
还有,这里有一些值得研究的东西

  • CrawlSpider
    不喜欢重载其默认的
    parse
    方法。在文档或文档字符串中搜索
    parse\u start\u url
    。您将看到,这是覆盖起始URL的默认
    parse
    方法的首选方法
  • NuSpider.hxs
    在定义之前被调用

    • 请同时检查scrapy的版本。最新版本使用“name”而不是“domain\u name”属性来唯一标识蜘蛛。

      您正在覆盖
      parse
      方法,而不是实现新的
      parse\u项
      方法。

      您能否提供到教程的链接(如果在线)?这将是一个有趣的阅读:)是的,这是到爬行蜘蛛示例的链接:这是在创建项目时包含的:爬行器模块=['Nu.SPIDER'],但我不知道是否需要添加域名='wcase'?爬行器现在正在运行,但它只是扫描初始url,它不会转到允许的链接。见我的另一个问题
      [Nu] ERROR: Could not find spider for domain: wcase
      
      u = names.pop()
      
      rules = (Rule(SgmlLinkExtractor(allow=(u, )), callback='parse_item'),)