使用Scrapy抓取数据时,JSON文件中只存储了25个条目;怎么增加?

时间:2015-04-16 16:47:45

标签: python json scrapy-spider

我在item.json文件中使用Scrapy抓取数据。数据被存储但问题是只存储了25个条目,而在网站中有更多条目。我使用以下命令:

class DmozSpider(Spider):
name = "dmoz"
allowed_domains = ["justdial.com"]
start_urls = ["http://www.justdial.com/Delhi-NCR/Taxi-Services/ct-57371"]
def parse(self, response):
    hxs = Selector(response)
    sites = hxs.xpath('//section[@class="rslwrp"]/section')
    items = []
    for site in sites:
        item = DmozItem()
        item['title'] = site.xpath('section[2]/section[1]/aside[1]/p[1]/span/a/text()').extract()
        items.append(item)
    return items

我用来运行脚本的命令是:

scrapy crawl myspider -o items.json -t json

有没有我不知道的设置?或者页面没有完全加载,直到刮擦。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

Abhi,这里有一些代码,但请注意它不完整且有效,只是为了向您展示这个想法。通常,您必须找到下一页网址,并尝试在您的蜘蛛网中重新创建相应的请求。在你的情况下使用AJAX。我使用FireBug来检查网站发送的请求。

URL = "http://www.justdial.com/function/ajxsearch.php?national_search=0&...page=%s" # this isn't the complete next page URL
next_page = 2 # how to handle next_page counter is up to you

def parse(self, response):
    hxs = Selector(response)
    sites = hxs.xpath('//section[@class="rslwrp"]/section')
    for site in sites:
        item = DmozItem()
        item['title'] = site.xpath('section[2]/section[1]/aside[1]/p[1]/span/a/text()').extract()
        yield item

    # build you pagination URL and send a request
    url = self.URL % self.next_page
    yield Request(url) # Request is Scrapy request object here
    # increment next_page counter if required, make additional 
    # checks and actions etc

希望这会有所帮助。