我从Scrapy开始,设法提取了一些我需要的数据。然而,并不是所有的东西都能得到。我正在应用官方教程中的知识,但它不起作用。我在谷歌上搜索了一下,也读了this SO question,但我相当肯定这不是问题所在
无论如何,我正试图解析来自this webshop的产品信息。我正在尝试获取产品名称、价格、rrp、发布日期、类别、范围、作者和出版商。下面是一个产品的相关CSS:https://pastebin.com/9tqnjs7A。这是我的密码。结尾带有#!
的所有内容都无法按预期工作
import scrapy
import pprint
class ForbiddenPlanetSpider(scrapy.Spider):
name = "fp"
start_urls = [
'https://forbiddenplanet.com/catalog/?q=mortal%20realms&sort=release-date&page=1',
]
def parse(self, response):
for item in response.css("section.zshd-00"):
print(response.css)
name = item.css("h3.h4::text").get() #!
price = item.css("span.clr-price::text").get() + item.css("span.t-small::text").get()
rrp = item.css("del.mqr::text").get()
release = item.css("dd.mzl").get() #!
category = item.css("li.inline-list__item::text").get() #!
universe = item.css("dt.txt").get() #!
authors = item.css("a.SubTitleItems").get() #!
publisher = item.css("dd.mzl").get() #!
pprint.pprint(dict(name=name,
price=price,
rrp=rrp,
release=release,
category=category,
universe=universe,
authors=authors,
publisher = publisher
)
)
我认为我需要添加一些子搜索(例如,目前release和publisher有相同的标准),但我不知道如何用词来搜索它(我已经尝试过了,但最终得到的是一般教程没有涵盖它)。任何能为我指明正确方向的东西都将不胜感激
哦,我没有包含“”空格,因为每当我使用一个Scrapy时,都无法立即找到
Scrapy不呈现JS,尝试disable javascript in your browser并刷新页面,没有JS的站点版本的HTML结构不同![enter image description here](https://i.stack.imgur.com/RQ3LB.png)
您应该用新的HTML结构重写选择器。尝试使用XPATH而不是CSS,因为它非常灵活
UPD
刮取此网站的最简单方法是向
https://forbiddenplanet.com/api/products/listing/?q=mortal%20realms&sort=release-date
发出请求响应是一个包含所有必要数据的JSON对象。您可以将“results”字段(或整个JSON对象)转换为python字典,并使用字典方法获取所有字段
一份有效的代码草案,展示了这个想法
相关问题 更多 >
编程相关推荐