Python提取HTML里的内容并解析——提取总页面数

通过所检索的url地址,找到总页数一栏,如:<span class="sui-pagination__total" tabindex="0" aria-label="Total 40 Pages">Total 40 Pages</span>,抽取总页数。

正则表达式提取总页数

考虑页数是个整数,可以用\d+表达式匹配当中的数字,代码如下:

python 复制代码
import re

page_count = 0
regex = r'\d+'
pagination_total_str = 'Total 40 Pages'
# 查找出对应的数字数组
match_arr = re.findall(regex, pagination_total_str)
# 第一个数字就是总页数
if match_arr[0].isdigit():
    page_count = eval(match_arr[0])
print(page_count)    

抽取页面的总页数信息

一开始想应用requests搭配BeautifulSoap提取页面数据,获得商品总数,但希音网站通过ajax手段加载完整页面,故不得不使用selenium+PhantomJS,完整加载页面后一次性获取全部内容再进行分析。

python 复制代码
# import requests
from selenium import webdriver
from bs4 import BeautifulSoup
import re

url = 'https://us.shein.com/pdsearch/shirt%20man/?ici=s1`RecentSearch`shirt%20man`_fb`d0`PageHome&search_source=1&search_type=all&source=historyWord&src_identifier=st%3D5%60sc%3Dshirt%20man%60sr%3D0%60ps%3D1&src_identifier_pre_search=&src_module=search&src_tab_page_id=page_home1720763711938'
# response = requests.get(url)
# content_text = ''
# page_count = 0
# if response.status_code == 200:
#     content_text = response.text
# if content_text:
#     soup = BeautifulSoup(content_text, "html.parser")
#     span = soup.find_all("span")
#     print(span)

def get_html(url):
    # driver = webdriver.PhantomJS(executable_path='./phantomjs-2.1.1-windows/bin/phantomjs')  # phantomjs的绝对路径,现在新版本的selenium废弃了此方法,需要2.48版
    driver = webdriver.Edge()
    driver.get(url)
    return driver.page_source

def get_total_page(html, regex=r'\d+'):
    page_count = 0
    soup = BeautifulSoup(html, 'html.parser')  # 用HTML解析网址
    tag = soup.find_all('span', attrs={'class': 'sui-pagination__total'})
    pagination_total_str = tag[0].decode_contents()
    # 查找出对应的数字数组
    match_arr = re.findall(regex, pagination_total_str)
    # 第一个数字就是总页数
    if match_arr[0].isdigit():
        page_count = eval(match_arr[0])
    return page_count

html = get_html(url)
get_total_page(html)
相关推荐
彩妙不是菜喵7 小时前
STL精讲:string类
开发语言·c++
子午7 小时前
【2026原创】卫星遥感图像识别系统+Python+深度学习+人工智能+算法模型+TensorFlow
人工智能·python·深度学习
小屁猪qAq7 小时前
创建型之单例模式
开发语言·c++·单例模式
郝学胜-神的一滴7 小时前
深入解析以太网帧与ARP协议:网络通信的基石
服务器·开发语言·网络·程序人生
木子啊7 小时前
HTML防窥技巧:让源码难以偷窥
前端·html·查看源码·禁止查看源码
lingran__7 小时前
C语言动态内存管理详解
c语言·开发语言
haokan_Jia7 小时前
【java使用LinkedHashMap进行list数据分组写入,顺序并没有按照原始顺序,原因分析】
java·开发语言·list
hakesashou7 小时前
python怎么将列表排序
python
weixin_440730507 小时前
04python编程笔记-01基础知识+02三种结构
java·笔记·python
半路_出家ren7 小时前
23.Python处理SSH和Redis
运维·网络·redis·python·网络安全·ssh·paramiko