元素的定位属性主要包括定位模式和边偏移两部分

核心提示Scrapy网页爬虫框架除了提供[python]掌握Scrapy框架重要的CSS定位元素方法-第四篇文章中所分享的css方法来定位网页元素外,也提供了xpath定位方法让开发者使用。XPath是一个使用类似档案路径的语法,来定位XML文件中

Scrapy web crawler框架不仅为[python]提供了Scrapy框架重要的css定位方法——第四篇分享的定位网页元素的CSS方法,还提供了xpath定位方法供开发者使用。

XPath是一种语法,它使用类似的文件路径来定位XML文件中的特定语言。由于它能有效地找到节点的位置,因此也被广泛应用于Python网络爬虫的元素定位中。

本文继续使用【python】掌握Scrapy框架的重要CSS定位元素方法——互联网趋势观察网站——AI News第四篇,向大家展示如何使用Scrapy框架中内置的xpath方法定位想要抓取的网页内容。亮点包括:

Scrapy XPath方法获取单个元素值Scrapy XPath方法获取多个元素值Scrapy XPath方法获取子元素值Scrapy XPath方法获取元素属性值。

首先,Scrapy XPath方法获得单个元素值

首先打开《INSIDE shouldered》的互联网趋势观察网站AI News网页,在文章标题处按下鼠标快捷键,选择“查看”。您可以看到如下所示的HTML源代码:

如果您想要使用XPath语法来定位此标记,则语法类似于文件路径,如以下示例所示:

//a[@ class = ' js-auto _ break _ title ']

表示根目录下的标签,用“[@ class ='']”指定其样式类别,这样就可以定位文章标题的标签。

接下来,打开上一篇文章中创建的Scrapy web crawler项目。在spiders/inside.py的parse方法中,将网页响应的结果改为调用xpath方法,粘贴刚刚找到的XPath路径,如下例所示:

然后,使用以下命令执行内部web crawler:

$ scrapy爬了进去

执行结果

微软新专利:和黑镜一样的模拟真人聊天AI!艾!

在上面例子的第11行,使用XPath路径定位要抓取的标签后,需要在XPath路径的末尾添加关键字“/text”,调用get方法获取单个元素值。

第二,抓取XPath方法获得多个元素值

如果要使用Scrapy xpath方法获取多个元素值,请使用xpath路径定位要爬网的网页元素标签,然后调用getall方法,如下例所示:

执行结果

从执行结果可以看出,getall方法会返回一个包含所有标签标题词的字符串,样式类别为“js-auto_break_title”。接下来,需要通过循环读取它,如下例所示:

执行结果

本文使用的get及getall方法,和[Scrapy教学4]掌握Scrapy框架重要的CSS定位元素方法文章一样为Scrapy官方的新版使用方式,而旧版的extract_first及extract方法,依据以下的官方文件说明,依然支持,不过还是建议读者可以使用新版的方法,紧密配合以性。

本文使用的get和getall方法与【Scrapy教学4】中掌握Scrapy框架的重要CSS定位元素的方法相同。根据以下官方文档,仍然支持旧的extract_first和extract方法。然而,建议读者可以使用新的方法,并密切合作。

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

在开发Python web crawler时,有一个非常常见的机会,就是需要定位要逐层向下爬行的子元素。此时,在Scrapy xpath方法中,被替换的xpath以标签的HTML源代码为例,如下图所示:

假设我们希望逐层定位标记,XPath路径将类似于以下示例的第11行:

执行结果

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

Python网页爬虫除了能够爬取网页上显示的内容外,也可以获取网页元素的属性值,表示来说,像是图片的src源属性值或超连结的href网址属性值等,这时候,就需要在Scrapy框架的xpath方法最后,加上“ @属性名称”,如下范例:Python web crawler不仅可以抓取网页上显示的内容,还可以获取web元素的属性值,比如图片的src源属性值或者超链接的href URL属性值。这时就需要在Scrapy框架的xpath方法末尾加上“@属性名”,如下例所示:

执行结果

上面的例子是用样式类别“js-auto_break_title”抓取所有的tag href属性值,也就是文章标题的URL。

动词 (verb的缩写)摘要

本文简单演示了在Scrapy框架中定位元素的另一种方法。

获取单个元素值,调用Get方法获取多个元素值,调用getall方法获取文本内容。添加关键字“/text”获取属性值,然后添加关键字“@属性名”。可以尝试使用这里分享的Scrapy xpath方法和文章《Scrapy教学4》中的css方法(Scrapy框架中定位元素的重要CSS方法)来练习抓取想要的网页内容。相信想入手Scrapy框架开发Python网络爬虫的人可以快速入门。

#python#

正版现货 精通Python爬虫框架Scrapy python3 scrapy教程 Scrapy入门京东查看已下架
 
友情链接
鄂ICP备19019357号-22