【发布时间】:2015-10-22 12:49:40
【问题描述】:
对于一项非营利性大学作业,我正在尝试使用 python 中的 scrapy 框架从网站 www.rateyourmusic.com 抓取数据,我取得了一些成功,因为我已经能够抓取名称来自艺术家页面的艺术家,但其他信息(出生日期,国籍)的 xpath 对我来说很难刮。你们中有人知道这些对象的正确 xpath 是什么吗?这是我的解析方法,它至少适用于艺术家姓名。
def parse_dir_contents(self, response):
item = rateyourmusicartist()
for sel in response.xpath('//div/div/div/div/table/tbody/tr/td'):
item['dateofbirth'] = sel.xpath('td/text()').extract() #these two selectors aren't working
item['nationality'] = sel.xpath('td/a/text()').extract()
for sel in response.xpath('//div/div/div/div/div/h1'):
item['name'] = sel.xpath('text()').extract() #this is the one that works
yield item
这是我正在抓取的艺术家页面的示例 URL http://rateyourmusic.com/artist/kanye_west
【问题讨论】:
-
从两个当前不起作用的 XPath 中删除
td/。然后他们应该工作。 -
感谢您的注意,不幸的是我已经尝试过这样做但没有成功,我添加了 td/ 以查看是否会有所作为,是否会在两个单独的 while 循环中进行解析有区别吗?我认为我必须这样做,因为它们位于页面源的不同部分
-
您的问题是您在虚拟 DOM 上中继(我猜您查看检查器以获取 HTML 结构)。您必须检查页面上的真实来源。 F.x.页面上没有 tbody 标签,但只有在虚拟 DOM 中。
标签: python xml xpath scrapy scrapy-spider