Scrapy 新手问题 - 无法运行教程文件

3 投票
3 回答
1567 浏览
提问于 2025-04-16 08:39

我刚开始学习Python和Scrapy,所以我先试着按照教程来做。我想要抓取www.dmoz.org这个网站,正如教程所说的那样。

我按照下面的内容写了dmoz_spider.py这个文件:

from scrapy.spider import BaseSpider
from scrapy.selector import HtmlXPathSelector

from dmoz.items import DmozItem

class DmozSpider(BaseSpider):
   name = "dmoz.org"
   allowed_domains = ["dmoz.org"]
   start_urls = [
       "http://www.dmoz.org/Computers/Programming/Languages/Python/Books/",
       "http://www.dmoz.org/Computers/Programming/Languages/Python/Resources/"
   ]

   def parse(self, response):
       hxs = HtmlXPathSelector(response)
       sites = hxs.select('//ul/li')
       items = []
       for site in sites:
           item = DmozItem()
           item['title'] = site.select('a/text()').extract()
           item['link'] = site.select('a/@href').extract()
           item['desc'] = site.select('text()').extract()
           items.append(item)
       return items

但是我从网站上得到的结果和我预期的完全不一样。
你们知道我哪里搞错了吗?

3 个回答

0

你需要找到存放settings.py文件的文件夹,然后在那个地方运行

scrapy crawl dmoz。

为了更清楚,跟着你的项目结构对照一下这个链接:https://github.com/scrapy/dirbot

1

你贴的代码没有问题。问题可能出在其他地方。能不能把你得到的完整输出也贴出来?(你的评论在有趣的部分之前就结束了……)

7

我遇到了这个问题。确保你按照教程里的说明做了下面的更改。

打开 items.py 文件,看看你是否把 class

class TutorialItem(Item):
    title=Field()
    link=Field()
    desc=Field()

改成了:

class DmozItem(Item):
    title=Field()
    link=Field()
    desc=Field()

撰写回答