首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何只获取xml站点地图中的产品页url

如何只获取xml站点地图中的产品页url
EN

Stack Overflow用户
提问于 2022-09-15 15:46:47
回答 1查看 34关注 0票数 1

我使用Scrapy的xml提要蜘蛛站点地图来爬行和提取urls,并且只提取urls。

xml站点地图如下所示:

代码语言:javascript
复制
<url>
<loc>
https://www.example.com/american-muscle-5-pc-kit-box.html
</loc>
<lastmod>2020-10-14T15:40:02+00:00</lastmod>
<changefreq>daily</changefreq>
<priority>1.0</priority>
<image:image>
<image:loc>
https://www.example.com/pub/media/catalog/product/cache/de5bc950da2c28fc62848f9a6b789a5c/1/2/1202_45.jpg
</image:loc>
<image:title>
5 PC. GAUGE KIT, 3-3/8" & 2-1/16", ELECTRIC SPEEDOMETER, AMERICAN MUSCLE
</image:title>
</image:image>
<PageMap>
<DataObject type="thumbnail">
<Attribute name="name" value="5 PC. GAUGE KIT, 3-3/8" & 2-1/16", ELECTRIC SPEEDOMETER, AMERICAN MUSCLE"/>
<Attribute name="src" value="https://www.example.com/pub/media/catalog/product/cache/de5bc950da2c28fc62848f9a6b789a5c/1/2/1202_45.jpg"/>
</DataObject>
</PageMap>
</url>

我只想得到<loc></loc>的内容

因此,我把我的刮痕蜘蛛设置成这样(为了简洁起见,省略了一些部分):

代码语言:javascript
复制
start_urls = ['https://www.example.com/sitemap.xml']
    namespaces = [('n', 'http://www.sitemaps.org/schemas/sitemap/0.9')]
    itertag = 'url'

def parse_node(self, response, selector):
    item = {}
    item['url'] = selector.select('url').get()
    selector.remove_namespaces()
    yield {
        'url': selector.xpath('//loc/text()').getall()
    }

最后给我所有产品图片的url和url。我如何设置这个蜘蛛只得到实际的产品页面url?

EN

回答 1

Stack Overflow用户

发布于 2022-09-15 18:04:25

为了更改站点地图蜘蛛逻辑的这一部分,需要重写它的_parse_sitemap方法(来源)

和替换部分

代码语言:javascript
复制
    elif s.type == 'urlset':
        for loc in iterloc(it, self.sitemap_alternate_links):
            for r, c in self._cbs:
                if r.search(loc):
                    yield Request(loc, callback=c)
                    break

就像这样

代码语言:javascript
复制
    elif s.type == 'urlset':
        for entry in it:
            item = entry #entry - sitemap entry parsed as dictionary by Sitemap spider
            ...
            yield item # instead of making request - return item

在这种情况下,蜘蛛应该从解析的站点地图条目中返回项,而不是对每个链接发出请求。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73734036

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档