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

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

    def parse(self, response):
        hxs = HtmlXPathSelector(response)
        sites = hxs.select('//ul/li')
        for site in sites:
            title = site.select('a/text()').extract()
            link = site.select('a/@href').extract()
            desc = site.select('text()').extract()
            print title, link, desc

这是我的代码。我想要大量的 URL 来使用循环抓取。那么我应该怎么做这些呢?我确实在那里放了多个网址,但我没有从所有网址中获得输出。某些 URL 停止响应。那么如何使用此代码确定获取数据呢?

4

2 回答 2

1

你的代码看起来不错,但你确定不start_urls应该从http://

start_urls = [
    "http://www.dmoz.org/Computers/Programming/Languages/Python/Books/",
    "http://www.dmoz.org/Computers/Programming/Languages/Python/Resources/"
]

UPD

start_urls是一个scrapy开头的url列表。通常它有一个或两个链接。很少更多。这些页面必须具有相同的 HTML 结构,因为 Scrapy 蜘蛛以相同的方式处理它们。

看看我是否在 start_urls 中放置了 4-5 个 url,它为前 2-3 个 url 提供了输出。

我不相信这一点,因为scrapy 不在乎start_urls列出了多少链接。

但它停止响应并告诉我如何为此实现 GUI。

Scrapy 有调试外壳来测试你的代码。

于 2012-04-15T13:21:58.980 回答
0

您刚刚发布了教程中的代码。您应该做的是实际阅读整个文档,尤其是基本概念部分。您基本上想要的是爬虫,您可以在其中定义蜘蛛将遵循并使用给定代码处理的规则。

用示例引用文档:

from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
from scrapy.selector import HtmlXPathSelector
from scrapy.item import Item

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

    rules = (
        # Extract links matching 'category.php' (but not matching 'subsection.php')
        # and follow links from them (since no callback means follow=True by default).
        Rule(SgmlLinkExtractor(allow=('category\.php', ), deny=('subsection\.php', ))),

        # Extract links matching 'item.php' and parse them with the spider's method parse_item
        Rule(SgmlLinkExtractor(allow=('item\.php', )), callback='parse_item'),
    )

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

        hxs = HtmlXPathSelector(response)
        item = Item()
        item['id'] = hxs.select('//td[@id="item_id"]/text()').re(r'ID: (\d+)')
        item['name'] = hxs.select('//td[@id="item_name"]/text()').extract()
        item['description'] = hxs.select('//td[@id="item_description"]/text()').extract()
        return item
于 2012-04-15T13:19:48.523 回答