Scrapy - 没有列表页,但我知道每个项目页的URL

0 投票
2 回答
592 浏览
提问于 2025-04-16 17:45

我正在使用Scrapy这个工具来抓取一个网站的数据。我想抓取的商品页面的链接看起来像这样:http://www.somepage.com/itempage/&page=x。其中,x可以是从1100的任何数字。因此,我设置了一个SgmlLinkExractor规则,并为所有类似的页面指定了一个回调函数。

这个网站没有一个包含所有商品的列表页面,所以我想找到一种方法,让Scrapy能够抓取这些链接(从1100)。这个似乎也遇到了同样的问题,但没有找到解决办法。

有没有人有解决方案呢?

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):
        # ...

撰写回答