如何在python中用汤检索最后一页号

时间:2019-04-06 22:23:43

标签: beautifulsoup

我想知道从一个“ li ”标签中检索最后一页号码的最佳方法是什么,下面是一个示例:

                <li class="active">
    <span>1</span>
  </li>

                <li>
    <a href="https://www.test.com/page=2">2</a>
  </li>

                <li>
    <a href="https://www.test.com/page=3">3</a>
  </li>

                <li>
    <a href="https://www.test.com/page=4">4</a>
  </li>


                <li class="pages disabled">
    <span>&hellip;</span>
  </li>

      <li class="next">
  <a href="https://www.test.com/page=2">
    <i class="icon-chevron-right"


  ></i>
  </a>
</li>

        <li>
      <a href="https://www.test.com/page=30">Last</a>
  </li>

在这种情况下,我需要获取“ 30”

的最后一页

非常感谢。在SO上看到了类似的问题,但不适用于我的情况。

更新:

感谢Bitto的回答。

上面的HTML源实际上是不准确的,因为它们是从页面源中手动复制的,在我当前的代码中使用的是汤,并且生成了ResultSet,如下所示:

代码:

source = requests.get(url).text
soup = BeautifulSoup(source,features="html.parser").findAll("li")

disabled

3 个答案:

答案 0 :(得分:0)

您可以找到带有文本a的{​​{1}}标签,然后从'Last'属性中获取页码。

href

输出

html="""
<li class="active"><span>1</span></li>
<li><a href="https://www.test.com/page=2">2</a></li>
<li><a href="https://www.test.com/page=3">3</a></li>
<li><a href="https://www.test.com/page=4">4</a></li>
<li class="pages disabled"><span>&hellip;</span></li>
<li class="next"><a href="https://www.test.com/page=2"><i class="icon-chevron-right"></i></a></li>
<li><a href="https://www.test.com/page=30">Last</a></li>
"""
from bs4 import BeautifulSoup
soup=BeautifulSoup(html,'html.parser')
a=soup.find('a',text='Last')
last_page=a['href'].split('=')[1]
print(last_page)

答案 1 :(得分:0)

我想我现在想出了解决方案:

source = requests.get(url).text
soup = BeautifulSoup(source,features="html.parser").findAll("li")
s = str(soup) 
page_info = BeautifulSoup(s[1:len(s)-1]) 
a=page_info.find('a',text='Last') 
last_page=a['href'].split('=')[-1]

谢谢@Bitto。

答案 2 :(得分:0)

我将使用:contains伪类来确保Last在textcontent中,并使用attribute = value选择器来确保page=在链接中

#html = your html
soup = BeautifulSoup(html, 'lxml')
link = soup.select_one('[href*="page="]:contains(Last)')['href']
page = link.split('=')[1]
print(page, link)