为了账号安全,请及时绑定邮箱和手机立即绑定

Scrapy 没有得到完整的产品名称,用逗号替换一些字符?

Scrapy 没有得到完整的产品名称,用逗号替换一些字符?

慕码人2483693 2023-02-22 15:52:26
我正在使用 scrapy 在中国电子商务网站天猫上获取产品名称和价格。代码非常简单,但是当它抓取名称时,它用逗号替换了产品名称的某些部分。对于下面的示例,我输入了“ipad air 3”,第一个产品的名称是“Apple/苹果 10.5 英寸 iPad Air”。“10.5英寸iPad Air”部分显示颜色不同,我想是因为它与搜索关键字相匹配。但我不确定为什么 scrapy 在产品名称的那部分得到“,,,,”。有谁知道我可以尝试修复它的潜在方法?综上所述,我想要得到的结果是“Apple/苹果 10.5英寸 iPad air”;然而,我得到的结果是“Apple/苹果'、''、''、''、'”。这是屏幕截图: 我得到的网页结果items = TmallspiderItem()product_info = response.css('.product-iWrap')for product in product_info:    product_name = product.css('.productTitle a::text').extract()    product_price = product.css('.productPrice em::text').extract()    items['product_name'] = product_name    items['product_price'] = product_price    yield items
查看完整描述

1 回答

?
慕雪6442864

TA贡献1812条经验 获得超5个赞

<a href="//detail.tmall.com/item.htm?id=612529092115&amp;skuId=4486436443940&amp;standard=1&amp;user_id=2202421911399&amp;cat_id=2&amp;is_b=1&amp;rn=c9a973f4c51d2bf839339810354ff07a" target="_blank" title="Apple/苹果 Apple/苹果 10.5 英寸 iPad Air" data-p="8-11" >

Apple/苹果 Apple/苹果 <span class=H>10.5</span> <span class=H>英寸</span> <span class=H>iPad</span> <span class=H>Air</span>

</a>

如您所见,您尝试获取的名称被拆分为多个span元素。

您的 css 选择器仅选择作为a元素的直接子元素的文本节点,因此它不会获取这些元素的内容。


您可以修改选择器以获取所有后代并加入它们,但我建议改用normalize-space()xpath 函数。


>>> product.css('.productTitle a::text').extract()

['\nApple/苹果 ', ' ', ' ', ' ', '\n']

>>> product.css('.productTitle a ::text').extract()

['\nApple/苹果 ', '10.5', ' ', '英寸', ' ', 'iPad', ' ', 'Air', '\n']

>>> product.css('.productTitle a').xpath('normalize-space()').get()

'Apple/苹果 10.5 英寸 iPad Air'


查看完整回答
反对 回复 2023-02-22
  • 1 回答
  • 0 关注
  • 58 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号