欢迎访问宙启技术站
智能推送

Python爬虫框架Scrapy的选择器用法介绍

发布时间:2023-12-12 07:20:31

Scrapy是一个强大的Python爬虫框架,其中选择器是用于提取HTML或XML文档中的数据的工具。Scrapy提供了两种选择器:基于XPath的Selector和基于CSS选择器的Selector。

1. 基于XPath的Selector用法:

XPath(XML路径语言)是一种用于定位和运算节点的语言,可以用于选择或提取XML或HTML文档中的元素。Scrapy提供了基于XPath语法的Selector,以下是一些常见的用法示例:

(1)使用XPath选择器提取元素文本内容:

from scrapy.selector import Selector

html = """
<html>
    <body>
        <div class="content">
            <h1>Hello, World!</h1>
        </div>
    </body>
</html>
"""

selector = Selector(text=html)
text = selector.xpath('//h1/text()').get()
print(text)  # 输出:"Hello, World!"

(2)使用XPath选择器提取元素属性值:

from scrapy.selector import Selector

html = """
<html>
    <body>
        <a href="https://example.com">Click here</a>
    </body>
</html>
"""

selector = Selector(text=html)
href = selector.xpath('//a/@href').get()
print(href)  # 输出:"https://example.com"

(3)使用XPath选择器提取多个元素:

from scrapy.selector import Selector

html = """
<html>
    <body>
        <ul>
            <li>Item 1</li>
            <li>Item 2</li>
            <li>Item 3</li>
        </ul>
    </body>
</html>
"""

selector = Selector(text=html)
items = selector.xpath('//li/text()').getall()
print(items)  # 输出:["Item 1", "Item 2", "Item 3"]

2. 基于CSS选择器的Selector用法:

CSS选择器是一种用于选择HTML元素的语法,类似于XPath,也可以用于提取HTML文档中的数据。Scrapy提供了基于CSS选择器语法的Selector,以下是一些常见的用法示例:

(1)使用CSS选择器提取元素文本内容:

from scrapy.selector import Selector

html = """
<html>
    <body>
        <div class="content">
            <h1>Hello, World!</h1>
        </div>
    </body>
</html>
"""

selector = Selector(text=html)
text = selector.css('h1::text').get()
print(text)  # 输出:"Hello, World!"

(2)使用CSS选择器提取元素属性值:

from scrapy.selector import Selector

html = """
<html>
    <body>
        <a href="https://example.com">Click here</a>
    </body>
</html>
"""

selector = Selector(text=html)
href = selector.css('a::attr(href)').get()
print(href)  # 输出:"https://example.com"

(3)使用CSS选择器提取多个元素:

from scrapy.selector import Selector

html = """
<html>
    <body>
        <ul>
            <li>Item 1</li>
            <li>Item 2</li>
            <li>Item 3</li>
        </ul>
    </body>
</html>
"""

selector = Selector(text=html)
items = selector.css('li::text').getall()
print(items)  # 输出:["Item 1", "Item 2", "Item 3"]

以上是Scrapy框架中选择器的用法介绍和示例。选择器是Scrapy中用于提取HTML或XML文档中数据的重要工具,掌握选择器的用法可以帮助我们更轻松地提取目标数据。