我想知道从一个“ 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>…</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")
答案 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>…</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)