用scrapy爬取酷狗前一百,parse中选择器选择使用css
时间: 2023-07-12 20:24:11 浏览: 100
好的,对于这个问题,我可以给你一些提示:
1. 首先,需要在`settings.py`中设置User-Agent,否则可能会被网站识别为爬虫并拒绝访问。
```
USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'
```
2. 接下来,需要在`spiders`目录下创建一个名为`kugou.py`的爬虫文件,并编写爬虫代码。
```
import scrapy
class KugouSpider(scrapy.Spider):
name = 'kugou'
allowed_domains = ['www.kugou.com']
start_urls = ['https://www.kugou.com/yy/rank/home/1-8888.html?from=rank']
def parse(self, response):
for item in response.css('.pc_temp_songlist ul li'):
yield {
'rank': item.css('.pc_temp_num::text').get(),
'song': item.css('.pc_temp_songname a::text').get(),
'singer': item.css('.pc_temp_songname span::text').get(),
}
```
3. 在`parse`函数中,我们使用了`response.css`方法来选取页面中的元素。`.pc_temp_songlist ul li`表示选择所有包含在类名为`pc_temp_songlist`的`ul`元素下的`li`元素。
4. `item.css('.pc_temp_num::text').get()`表示选取`li`元素下类名为`pc_temp_num`的元素的文本内容。
5. `item.css('.pc_temp_songname a::text').get()`表示选取`li`元素下类名为`pc_temp_songname`的元素中的`a`元素的文本内容。
6. `item.css('.pc_temp_songname span::text').get()`表示选取`li`元素下类名为`pc_temp_songname`的元素中的`span`元素的文本内容。
7. 最后,我们将这些信息保存到字典中并通过`yield`返回给Scrapy框架。
希望以上提示可以帮助到你!
阅读全文