用Python爬取中国校花网后,我发现她们都有个共同点!

我们都知道,爬虫获取页面的响应之后,最关键的就是如何从繁杂的网页中把我们需要的数据提取出来,

python从网页中提取数据的包很多,常用的解析模块有下面的几个:

  • BeautifulSoup API简单 但解析速度慢,不推荐使用

  • lxml 由C语言编写的xml解析库(libxm2),解析速度快 但是API复杂

  • Scrapy 综合以上两者优势实现了自己的数据提取机制,被称为Selector选择器。

它是由lxml库构建的,并简化了API ,先通过XPath或者CSS选择器选中要提取的数据,然后进行提取

Scrapy选择器构建于 lxml 库之上,这意味着它们在速度和解析准确性上非常相似。

Selector选择器的用法

下面我们以 Scrapy Shell 和 Scrapy 文档服务器的一个样例页面(url=http://doc.scrapy.org/en/latest/_static/selectors-sample1.html) 来了解选择器的基本用法:

构造选择器

Scrapy selector 可以以 文字(Text),二进制(content)或 TextResponse 构造的 Selector。其根据输入类型自动选择最优的分析方法 以文字构造:

url = "http://doc.scrapy.org/en/latest/_static/selectors-sample1.html"
response = requests.get(url=url)
selector = Selector(text=response.text)

以 response 构造:

selector = Selector(response=response)

以二进制构造:

selector = Selector(text=response.content)

使用选择器

这里强烈推荐使用 scrapy shell 来进行调试!

为什么要使用 scrapy shell ?

当我们需要爬取某个网站,然后提取数据的时候,要用到 xpath css 或者正则提取方法等

但是有时候这些xpath 或者css 语句不一定一次就能写对,有时候需要我们不断地去调试。

可能有些人会说,我每写一次然后重新去请求,输出结果测试一下就知道了。只能说这种做法就比较愚蠢了,如果遇到那种容易封IP的网站,你这样频繁的去请求测试,测不了几次,你的ip就被封了

这时候,我们要使用 scrapy shell 去调试,测试成功后,在拷贝到我们的项目中就可以了

如何使用 scrapy shell?

首先打开 Shell, 然后输入命令 scrapy shell url

scrapy shell http://doc.scrapy.org/en/latest/_static/selectors-sample1.html

当然在 pycharm中, 也可以使用

当 shell 载入后,将获得名为 response 的 shell 变量,url 响应的内容保存在 response 的变量中,可以直接使用以下

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值