我在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
有没有我不知道的设置?或者页面没有完全加载,直到刮擦。我该如何解决这个问题?
答案 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
希望这会有所帮助。