小编Boi*_*ker的帖子

Scrapy - 解析给定域的所有子页面

我想用scrapy解析kickstarter.com项目,但无法弄清楚如何制作我没有在start_urls下明确指定的蜘蛛搜索项目.我已经找到scrapy代码的第一部分(我可以从一个网站提取必要的信息),我无法让它为域kickstarter.com/projects下的所有项目执行此操作.

根据我的阅读,我相信解析是可能的(1)使用起始页面上的链接(kickstarter.com/projects),(2)使用来自一个项目页面的链接跳转到另一个项目,以及(3)使用站点地图(我不认为kickstarter.com有)定位要解析的网页.

我花了好几个小时尝试这些方法但是我无处可去.

我已经使用了scrapy教程代码并在其基础上构建.

到目前为止,这是有效的部分:

from scrapy import log
from scrapy.contrib.spiders import CrawlSpider   
from scrapy.selector import HtmlXPathSelector  

from tutorial.items import kickstarteritem

class kickstarter(CrawlSpider):
    name = 'kickstarter'
    allowed_domains = ['kickstarter.com']    
    start_urls = ["http://www.kickstarter.com/projects/brucegoldwell/dragon-keepers-book-iv-fantasy-mystery-magic"]

    def parse(self, response):
        x = HtmlXPathSelector(response)

        item = kickstarteritem()
        item['url'] = response.url
        item['name'] = x.select("//div[@class='NS-project_-running_board']/h2[@id='title']/a/text()").extract()
        item['launched'] = x.select("//li[@class='posted']/text()").extract()
        item['ended'] = x.select("//li[@class='ends']/text()").extract()
        item['backers'] = x.select("//span[@class='count']/data[@data-format='number']/@data-value").extract()
        item['pledge'] = x.select("//div[@class='num']/@data-pledged").extract()
        item['goal'] = x.select("//div[@class='num']/@data-goal").extract()
        return item
Run Code Online (Sandbox Code Playgroud)

web-crawler scrapy web-scraping

5
推荐指数
1
解决办法
4579
查看次数

标签 统计

scrapy ×1

web-crawler ×1

web-scraping ×1