数据结构定位元素

核心提示想要开发的Python网页爬虫的朋友,知道都会定位元素是一个非常重要的动作,在「python」如何有效利用Scrapy框架建立网页爬虫看这篇就懂——第三篇文章中,使用了Scrapy框架的BS4模组,也就是BeautifulSoup的语法,来

想开发python网络爬虫的朋友都知道,定位元素是一个非常重要的动作。在Python中,如何有效地使用Scrapy框架构建网络爬虫,看了这篇文章就明白了。第三篇使用Scrapy框架的BS4模块,也就是BeautifulSoup的语法来演示抓取目标网页中的HTML元素。

但实际上Scrapy自己的框架有自己定位元素的方法,包括CSS和XPath。本文将继续使用上一篇文章内部硬塞的互联网趋势观察网站——艾新闻为例。先来分享一下状语从句:在Scrapy的框架中,如何利用CSS定位元素的方法来抓取想要的网页内容。关键点包括:

Scrapy CSS方法获取单个元素值Scrapy CSS方法获取多个元素值Scrapy CSS方法获取子元素值Scrapy CSS方法获取元素属性值一、Scrapy CSS方法获取单个元素值

CSS级联样式表相信大家都不陌生,可以用自定义的样式类别来装饰网页,比如字体颜色、粗体类型等。所以在使用Scrapy框架开发网络爬虫的时候,也可以使用CSS样式类别来定位想要抓取的网页元素。

去互联网趋势观察网站——艾新闻,里面硬塞的。在文章标题中,点击鼠标快捷键,选择检查。您可以看到以下CSS样式类别的示例:

假设你想用css样式category获取一个网页的单个元素值,也就是单篇文章的标题,在Scrapy框架中,你可以在spider/inside . py的parse方法中使用CSS方法定位单个元素,如下例所示:

然后,使用下面的指令来执行里面的网络爬虫:

$ scrapy爬了进去

执行结果

烘焙大王!Google AI会在烘焙之前猜测你的配方会变成什么食物,并创建一个混合甜点“breakie”和“cakie”。谷歌人工智能会在烘焙前猜测你的配方会变成什么食物,并创建一个混合甜点“breakie”和“Cakie”

在上面例子的第10行,response是Scrapy框架请求的响应结果。然后,调用css方法,放置要定位的HTML标记,并在点之后添加其CSS样式类别。因为想要获取元素的文本,所以添加了关键字“::text”。最后,调用get方法来获取单个元素。

第二,Scrapy CSS方法获得多个元素值

在Scrapy框架中,如果要抓取网页的多个元素值,可以调用getall方法,如下例所示:

执行结果

可以看到getall方法发回了一个字符串,其中包含了所有样式类别为“js-auto_break_title”的标签词。然后,您可以通过使用循环来获取文章的标题,如下例所示:

执行结果

本文使用Scrapy framework最新版本的get和getall方法。您可能已经看到其他教学文章使用旧的extract_first和extract方法。根据官方文档,两者都是支持的,但是get和getall的新方法使得代码简洁正确,如下图所示:

3.Scrapy CSS方法获取子元素的值

在实践中,使用Scrapy框架开发Python网络爬虫时,并不是每一个你要抓取的网页元素都会有CSS样式的类别可以定位。此时,您需要通过上层的父元素向下定位子元素。

假设INSIDE硬塞的互联网趋势观察网站AI News的文章标题标签没有“JS-auto _ break _ title”CSS样式类别,但想抓取标签的文字内容,如何实现?如下图:

这时候就需要使用Scrapy框架中的CSS样式类别先定位标签,再获取其下的子元素标签,如下例所示:

执行结果

在示例的第十行中,用CSS样式类别“post _ title”定位标签后,后跟一个空 white,添加标签意味着获取标签下的所有标签,所以添加“::text”来获取文本。

四。获取元素属性值的Scrapy CSS方法

另外,在开发Python网络爬虫时,也可以抓取元素的属性值。换句话说,最常见的是标签的href属性值,也就是文章的链接URL。此时只需替换关键字“::text”并修改为“::attr”,如下例所示:

执行结果

动词 (verb的缩写)摘要

本文结合实际网站,演示了用css方法定位网页元素的Scrapy框架的基本用法。要点总结如下:

获取单个元素值,调用Get方法获取多个元素值,调用getall方法获取文本内容,添加关键字“::text”获取属性值,添加关键字“::attr”

希望对想学习Scrapy框架的朋友有帮助。在下一篇文章中,我们将分享另一种定位元素的方法——XPath。如果你有任何问题或想法,请在下面留言,与我分享。

#python#

流畅的Python京东月销量100好评率99%无理由退换京东配送官方店¥109.6购买
 
友情链接
鄂ICP备19019357号-22