我试图通过获取带有分页的物业网站上的条目标题来学习Scrapy。我无法从rules
列表中定义的“下一页”中获取条目。在
代码:
from scrapy import Spider
from scrapy.selector import Selector
from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import Rule, CrawlSpider
from property.items import PropertyItem
import re
class VivastreetSpider(CrawlSpider):
name = 'viva'
allowed_domains = ['http://chennai.vivastreet.co.in/']
start_urls = ['http://chennai.vivastreet.co.in/rent+chennai/']
rules = [
Rule(LinkExtractor(restrict_xpaths = ('//*[text()[contains(., "Next")]]')), callback = 'parse_item', follow = True)
]
def parse_item(self, response):
a = Selector(response).xpath('//a[contains(@id, "vs-detail-link")]/text()').extract()
i = 1
for b in a:
print('testtttttttttttttt ' + str(i) + '\n' + str(b))
i += 1
item = PropertyItem()
item['title'] = a[0]
yield item
编辑-用parse_项替换了parse方法,现在无法获取任何内容。在
忽略末尾的item对象代码,我打算用另一个方法的请求回调替换它,该方法从每个条目的URL获取更多细节。在
如果需要的话,我会把日志贴出来。在
Edit#2-我从分页页面获取URL,然后向另一个方法发出请求,该方法最终从每个条目的页面获取详细信息。parse_start_url()
方法正在工作,但没有调用parse_item method()
。在
代码:
^{pr2}$
你的蜘蛛很少有毛病。在
你的
allowed_domains
坏了,如果你检查你的蜘蛛,你可能会得到很多过滤掉的请求。你对CrawlSpider有点误解。首先,当crawspider启动时,它下载
start_urls
中的每个url并调用parse_start_url
。所以你的蜘蛛应该看起来像:
相关问题 更多 >
编程相关推荐