Python爬虫基础教程(20)Python Scrapy爬虫框架选择器之CSS选择器:爬虫新手进阶:Scrapy框架CSS选择器全攻略

网页爬虫就像钓鱼,有了Scrapy这个鱼竿,更重要的是学会CSS选择器这个鱼饵的制作方法。

一、CSS选择器:爬虫工程师的“瞄准镜”

1.1 什么是CSS选择器?

简单来说,CSS选择器就像是给网页元素贴标签的工具,告诉浏览器如何找到特定的元素并应用样式。而在爬虫中,我们借用这套规则来定位和提取数据。

Scrapy中的选择器是基于lxml库构建的,解析速度非常快,比BeautifulSoup快不少。当你需要快速抓取大量数据时,这个速度优势会非常明显。

1.2 为什么选择CSS选择器而不是XPath?

很多新手会纠结学XPath还是CSS选择器,我的建议是:都学,但先从CSS开始。原因很简单:

  • 语法更简洁:如果你有前端基础,CSS选择器会非常亲切
  • 更易读写response.css('div.title')response.xpath('//div[@class="title"]')更简短
  • 前端友好:可以直接借用浏览器中看到的CSS类名和ID

Scrapy官方文档也指出,选择器自动使用HTML解析器,并且确保响应主体只解析一次,这让代码更高效。

二、Scrapy选择器基础:你的第一个选择器

2.1 准备工作

在开始之前,确保你已经安装了Scrapy。如果还没安装,可以使用pip:

pip install scrapy

2.2 选择器的基本使用

在Scrapy中,你有几种方式创建和使用选择器:

# 方法1:直接使用response的快捷方式
title = response.css('title::text').get()

# 方法2:通过selector属性
title = response.selector.css('title::text').get()

# 方法3:手动创建选择器
from scrapy.selector import Selector
body = '<html><body><span>good</span></body></html>'
selector = Selector(text=body)
title = selector.css('title::text').get()

推荐使用第一种方法,因为它最简洁,而且能确保响应只被解析一次。

2.3 提取内容的基本方法

提取数据时,你有几个重要的方法:

  • .get():提取第一个匹配元素的内容,没有匹配时返回None
  • .getall():提取所有匹配元素的内容,返回列表
  • .extract().getall()的别名,功能相同
# 提取第一个标题
first_title = response.css('h1::text').get()

# 提取所有标题
all_titles = response.css('h1::text').getall()

# 当元素不存在时提供默认值
title = response.css('h1::text').get(default='默认标题')

三、CSS选择器语法大全:从菜鸟到专家

CSS选择器的语法内容丰富,让我们通过表格和实例来全面掌握。

3.1 基础选择器

这些是你最常用到的选择器,掌握它们就能解决80%的问题:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

值引力

持续创作,多谢支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值