使用BeautifulSoup在网页上找到特定文本?

时间:2019-07-13 18:33:42

标签: python regex python-3.x web-scraping beautifulsoup

我需要从this网页中获取漫画的最后页码,该页面上的下拉列表中包含字符串'Last Page(57)'。我想使用Beautiful Soup查找最后的页码。

import bs4 as bs
import requests

ref = requests.get('https://readms.net/r/onepunch_man/083/4685/3')
soup = bs.BeautifulSoup(ref.text, 'lxml')

#FIND OUT THE LAST PAGE NUMBER FROM THE SOURCE CODE!!!

print(soup.find_all(string='Last Page')

3 个答案:

答案 0 :(得分:1)

使用此代码:

res = soup.find_all("ul",{"class":"dropdown-menu"})[-1].find_all("li")[-1].text
print(res)

输出:

'Last Page (57)'

查找号码用途:

import re
last_page_number = re.findall("\d+",res)
print(last_page_number)

输出:

57

答案 1 :(得分:0)

您不需要使用BeautifulSoup。只需检查Last Page项的页面源即可:

import re
import requests

r = requests.get('https://readms.net/r/onepunch_man/083/4685/3').text
last_page = re.findall('Last Page \((\d+)\)', r)[0]

输出:

57

答案 2 :(得分:0)

对于bs4 4.7.1,您可以使用:contains在a中用Last Page来获取innerText标记

import requests
from bs4 import BeautifulSoup

r  = requests.get('https://readms.net/r/onepunch_man/083/4685/3')
soup = BeautifulSoup(r.content, 'lxml')
last_page = int(soup.select_one('a:contains("Last Page")')['href'].split('/')[-1])

缺乏鲁棒性:

您可以与

进行位置匹配
.btn-reader-page li:last-child a