【问题标题】:Extract text inside anchor tag using xpath使用 xpath 提取锚标记内的文本
【发布时间】:2017-12-26 07:02:46
【问题描述】:

我正在尝试确定网站上的任何搜索结果有多少页面,以便我可以使用 lxml 和 xpath 为所有页面抓取数据。

有一个分页标签,结构如下: 页数:1 2 3 ... 7 下一页

html 内容类似

<ul class="ulclass">
 <li></li>
 <li>
      <span> You are on the first page</span>
      "1"
 </li>
 <li>
      <a href="link to second page">
        <span></span>
      "2"
      </a>
 </li>
  <li>
 </li>
      ...
  <li>
      <a href="link to last page">
        <span></span>
      "7"
      </a>
 </li>

我的方法是提取页码 1、2、3、7,这样我就可以为每个页面重复网络抓取 7 次,否则它只会抓取页面的第一个结果。 我编写了以下 xpath,但它没有返回正确的页码。

xpath('//ul[@class="ulclass"]/li/a/text())

【问题讨论】:

  • 如果你在做网页抓取,你在使用什么其他软件
  • 我目前没有使用除 python 和 lxml 以外的任何东西。

标签: xpath web-scraping


【解决方案1】:

如果我扩展你的例子来形成这个,

<ul class="ulclass">
<li><span>You are on the first page</span>"1"</li>
<li><a href="link to second page"><span></span>"2"</a></li>
<li><a href="link to third page"><span></span>"3"</a></li>
<li><a href="link to fourth page"><span></span>"4"</a></li>
<li><a href="link to fifth page"><span></span>"5"</a></li>
<li><a href="link to sixth page"><span></span>"6"</a></li>
<li><a href="link to last page"><span></span>"7"</a></li>
</ul>

然后在 Python 中使用 scrapy 我可以得到这个:

>>> from scrapy.selector import Selector
>>> selector = Selector(text=open('temp.htm').read())
>>> selector.xpath('..//ul[@class="ulclass"]/li/a/text()').extract()
['"2"', '"3"', '"4"', '"5"', '"6"', '"7"']

【讨论】:

  • 感谢您的周转比尔。深深地欣赏它。问题出在网页上。它返回的最后一个数字是 7 的倍数。xpath 返回的结果与您的相同。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-24
  • 2013-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-29
相关资源
最近更新 更多