我正在使用Scrapy来搜索网站。我要抓取的项目页面如下:http://www.somepage.com/itempage/&page=x。 x
是从1
到100
的任何数字。因此,我有一个SgmlLinkExractor
规则,其中包含为类似于此的任何页面指定的回调函数。
该网站没有包含所有项目的列表页面,所以我想以某种方式很好地扫描这些网址(从1
到100
)。这个人here似乎有同样的问题,但无法弄明白。
有没有人有解决方案?
答案 0 :(得分: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):
# ...
答案 1 :(得分:1)
如果只是一次性事情,您可以使用所有链接创建一个本地html文件file:///c:/somefile.html
。开始抓取该文件并将somepage.com
添加到允许的域。
或者,在parse函数中,您可以返回一个新的Request,它是下一个要删除的url。