Scrapy - 没有列表页,但我知道每个项目页的URL
我正在使用Scrapy这个工具来抓取一个网站的数据。我想抓取的商品页面的链接看起来像这样:http://www.somepage.com/itempage/&page=x。其中,x
可以是从1
到100
的任何数字。因此,我设置了一个SgmlLinkExractor
规则,并为所有类似的页面指定了一个回调函数。
这个网站没有一个包含所有商品的列表页面,所以我想找到一种方法,让Scrapy能够抓取这些链接(从1
到100
)。这个人似乎也遇到了同样的问题,但没有找到解决办法。
有没有人有解决方案呢?
2 个回答
1
如果这只是一次性的操作,你可以创建一个本地的 HTML 文件,比如 file:///c:/somefile.html
,里面放上所有的链接。然后从这个文件开始抓取数据,并把 somepage.com
加入到允许的域名列表中。
另外,在解析函数中,你可以返回一个新的请求,这样就可以抓取下一个网址了。
6
你可以在你的 Spider
类的 start_urls 属性中列出所有已知的网址:
class SomepageSpider(BaseSpider):
name = 'somepage.com'
allowed_domains = ['somepage.com']
start_urls = ['http://www.somepage.com/itempage/&page=%s' % page for page in xrange(1, 101)]
def parse(self, response):
# ...