龙空技术网

使用 lxml 抓取菜鸟网络的左侧栏

Hi吉多范罗苏姆 237

前言:

如今同学们对“css左侧窗口如何弄出来”可能比较关切,大家都需要分析一些“css左侧窗口如何弄出来”的相关资讯。那么小编同时在网络上收集了一些有关“css左侧窗口如何弄出来””的相关内容,希望咱们能喜欢,姐妹们一起来了解一下吧!

1. 通过 XPath 找到左侧栏的 xpath 信息

得到的 XPath 值为 //div[@class='sidebar-box gallery-list']//a

2.XPath 的相关知识 XPath 教程

2.1 XPath 节点

在 XPath 中,有七种类型的节点:元素、属性、文本、命名空间、处理指令、注释以及文档(根)节点。

XML 文档是被作为节点树来对待的。树的根被称为文档节点或者根节点。

请看下面这个 XML 文档:

<?xml version="1.0" encoding="UTF-8"?><bookstore> <book> <title lang="en">Harry Potter</title> <author>J K. Rowling</author> <year>2005</year> <price>29.99</price> </book></bookstore>

上面的XML文档中的节点例子:

<bookstore> (文档节点)<author>J K. Rowling</author> (元素节点)lang="en" (属性节点)

2.2 基本值(或称原子值,Atomic value)

基本值是无父或无子的节点。

基本值的例子:

J K. Rowling"en"

2.3 项目(Item)

项目是基本值或者节点。

2.4 节点关系

2.4.1 父(Parent)

每个元素以及属性都有一个父。

在下面的例子中,book 元素是 title、author、year 以及 price 元素的父:

<book> <title>Harry Potter</title> <author>J K. Rowling</author> <year>2005</year> <price>29.99</price></book>

2.4.2 子(Children)

元素节点可有零个、一个或多个子。

在下面的例子中,title、author、year 以及 price 元素都是 book 元素的子:

<book> <title>Harry Potter</title> <author>J K. Rowling</author> <year>2005</year> <price>29.99</price></book>

2.4.3 同胞(Sibling)

拥有相同的父的节点

在下面的例子中,title、author、year 以及 price 元素都是同胞:

<book> <title>Harry Potter</title> <author>J K. Rowling</author> <year>2005</year> <price>29.99</price></book>

2.4.4 先辈(Ancestor)

某节点的父、父的父,等等。

在下面的例子中,title 元素的先辈是 book 元素和 bookstore 元素:

<bookstore><book> <title>Harry Potter</title> <author>J K. Rowling</author> <year>2005</year> <price>29.99</price></book></bookstore>

2.4.5 后代(Descendant)

某个节点的子,子的子,等等。

在下面的例子中,bookstore 的后代是 book、title、author、year 以及 price 元素:

<bookstore><book> <title>Harry Potter</title> <author>J K. Rowling</author> <year>2005</year> <price>29.99</price></book></bookstore>

2.5 XPath 语法

XPath 使用路径表达式来选取 XML 文档中的节点或节点集。节点是通过沿着路径 (path) 或者步 (steps) 来选取的。

XML 实例文档

我们将在下面的例子中使用这个 XML 文档。

<?xml version="1.0" encoding="UTF-8"?><bookstore><book> <title lang="eng">Harry Potter</title> <price>29.99</price></book><book> <title lang="eng">Learning XML</title> <price>39.95</price></book></bookstore>

2.5.1 选取节点

2.5.2 谓语(Predicates)

2.5.3 选取未知节点

2.5.4 选取若干路径

2.6 XPath 轴(Axes)

XML 实例文档

我们将在下面的例子中使用此 XML 文档:

<?xml version="1.0" encoding="UTF-8"?> <bookstore> <book> <title lang="en">Harry Potter</title> <price>29.99</price></book> <book> <title lang="en">Learning XML</title> <price>39.95</price></book> </bookstore>

轴可定义相对于当前节点的节点集。

2.7 XPath 运算符

XPath 表达式可返回节点集、字符串、逻辑值以及数字。下面列出了可用在 XPath 表达式中的运算符:

2.8 XPath Examples

在本节,让我们通过实例来学习一些基础的 XPath 语法。

XML实例文档

我们将在下面的例子中使用这个 XML 文档:

"books.xml":

<?xml version="1.0" encoding="UTF-8"?><bookstore><book category="COOKING"> <title lang="en">Everyday Italian</title> <author>Giada De Laurentiis</author> <year>2005</year> <price>30.00</price></book><book category="CHILDREN"> <title lang="en">Harry Potter</title> <author>J K. Rowling</author> <year>2005</year> <price>29.99</price></book><book category="WEB"> <title lang="en">XQuery Kick Start</title> <author>James McGovern</author> <author>Per Bothner</author> <author>Kurt Cagle</author> <author>James Linn</author> <author>Vaidyanathan Nagarajan</author> <year>2003</year> <price>49.99</price></book><book category="WEB"> <title lang="en">Learning XML</title> <author>Erik T. Ray</author> <year>2003</year> <price>39.95</price></book></bookstore>

2.8.1 选取所有 title

下面的例子选取所有 title 节点:

/bookstore/book/title

2.8.2 选取第一个 book 的 title

/bookstore/book[1]/title

2.8.3 选取所有价格

/bookstore/book/price/text()

2.8.4 选取价格高于 35 的 price 节点

/bookstore/book[price>35]/price

2.8.5 选取价格高于 35 的 title 节点

/bookstore/book[price>35]/title

3. 编写程序

# -*- coding: utf-8 -*- import requestsfrom lxml import etreetarget = ""# 获取页面源码r = requests.get(target)# 解析页面源码selector = etree.HTML(r.content.decode('utf-8').encode('utf-8'))links = selector.xpath("//div[@class='sidebar-box gallery-list']//a/text()")for link in links: print(link.strip( )) 

标签: #css左侧窗口如何弄出来