我正在使用scrapy
从python
中的网站获取信息,而我只习惯使用Xpath查找信息。
我想从此页面返回此艺术家的专辑的所有平均评分列表。 https://rateyourmusic.com/artist/kanye_west
要查找我使用的相册的节点//div[@id="disco_type_s"]
我尝试使用disco_avg_rating
div[@class="disco_avg_rating"]/text()
的div
这是我的功能
def parse_dir_contents(self, response):
item = rateyourmusicalbums() *ignore this
for i in response.xpath('//div[@id="disco_type_s"]'):
item['average rating']=i.xpath('div[@class="disco_avg_rating"]/text()').extract()
yield item
我尝试获取此列表的所有内容都会导致问题。通常它更直,但这次我必须区分专辑和单曲等,所以我遇到了麻烦。
感谢您的帮助,我对网络抓取相当陌生。
答案 0 :(得分:0)
response.xpath('//div[@id="disco_type_s"]')
只找到一个标记(这是使用id
匹配xpath时主要发生的情况,它们是唯一的)。要获得选择器列表,您应该使用以下内容:
response.xpath('//div[@id="disco_type_s"]/div[@class="disco_release"]')
将匹配多个标记,因此您可以对这些标记进行迭代。
然后使用average rating
'./div[@class="disco_avg_rating"]/text()'
答案 1 :(得分:0)
以下情况应该有效。
mysql> show variables like 'socket';
+-----------------------------------------+-------------------------------+
| Variable_name | Value |
+-----------------------------------------+-------------------------------+
| socket | /yourpath/mysql.sock |
+-----------------------------------------+-------------------------------+
1 rows in set (0.00 sec)