如何使用 xpath 从这个网站中提取 URL,并使用 href 刮擦?



我仍然了解 xpath 的要点及其工作原理(已经尝试从 w3 中学习了一段时间(,但我有点困惑如何从这个网页中提取这部分代码:https://www.pro-football-reference.com/years/2005/(我一直在这里查看源代码:view-source:https://www.pro-football-reference.com/years/2005/(。我想从第 363 - 383 行中提取 URL。

<ul class="">
<li><a href="/years/2005/week_1.htm">Week 1</a></li>
<li><a href="/years/2005/week_2.htm">Week 2</a></li>
<li><a href="/years/2005/week_3.htm">Week 3</a></li>
<li><a href="/years/2005/week_4.htm">Week 4</a></li>
<li><a href="/years/2005/week_5.htm">Week 5</a></li>
<li><a href="/years/2005/week_6.htm">Week 6</a></li>
<li><a href="/years/2005/week_7.htm">Week 7</a></li>
<li><a href="/years/2005/week_8.htm">Week 8</a></li>
<li><a href="/years/2005/week_9.htm">Week 9</a></li>
<li><a href="/years/2005/week_10.htm">Week 10</a></li>
<li><a href="/years/2005/week_11.htm">Week 11</a></li>
<li><a href="/years/2005/week_12.htm">Week 12</a></li>
<li><a href="/years/2005/week_13.htm">Week 13</a></li>
<li><a href="/years/2005/week_14.htm">Week 14</a></li>
<li><a href="/years/2005/week_15.htm">Week 15</a></li>
<li><a href="/years/2005/week_16.htm">Week 16</a></li>
<li><a href="/years/2005/week_17.htm">Week 17</a></li>
<li><a href="/years/2005/week_18.htm">Wild Card</a></li>
<li><a href="/years/2005/week_19.htm">Divisional</a></li>
<li><a href="/years/2005/week_20.htm">Conf Champ</a></li>
<li><a href="/years/2005/week_21.htm">Super Bowl</a></li>
</ul>

我尝试在 . 控制台中使用$x('//ul[@class=""]/@href'),但它实际上不起作用。有人可以帮我从中提取 href 吗?任何帮助或建议将不胜感激!

有两种类似的方法来解析那里的hrefs

较短(但更容易出错,具体取决于 HTML 的其余部分的外观( x('//ul[@class=""]//a/@href')

含义:任何"a"是具有空类属性的任何"ul"节点的后代(直接或非直接(。

表达式稍长,但不易出错,因为它更明确 x('//ul[@class=""]/li/a/@href')

含义:任何"a"节点是任何"li"节点的直接后代,是具有空类属性的任何"ul"节点的直接后代。

此外,您可以尝试引用更高级的 xpath 函数(尽管并非每个框架都支持(,例如字符串长度(用于类属性(。

">

//"将选择匹配的任何后代,而"/"仅选择匹配的直接后代。既然不是直系后代,我觉得你的选择器应该是这样的:

$x('//ul[@class=""]//@href')

要仅获取内部文本以"Week"开头的元素,请执行以下操作:

$x('//ul[@class=""]//a[starts-with(.,"Week")]/@href')

最新更新