当前位置: 首页 > news >正文

热销商品-爬虫销量信息

技术部分详解

        1、发送GET请求:使用requests库的get()方法发送GET请求来获取指定网页的内容。在这个例子中,使用了一个自定义的User-Agent,以模拟一个浏览器发送请求。

headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'
}

        Mozilla/5.0:通用格式标识,表示这是一个Mozilla浏览器的用户代理。

        (Windows NT 10.0; Win64; x64):操作系统和系统架构的说明,表示这是Windows NT 10.0操作系统的64位版本。

        AppleWebKit/537.36 (KHTML, like Gecko):WebKit引擎的版本信息,类似于Chrome浏览器的引擎。
        Chrome/58.0.3029.110 Safari/537.3:浏览器的版本信息,这里表示Chrome浏览器的58.0.3029.110版本和Safari浏览器的537.3版本。

# 发送GET请求获取页面内容response = requests.get(url, headers=headers)

        2、解析页面内容:使用BeautifulSoup库的BeautifulSoup()方法来解析页面的HTML内容。在这个例子中,使用了’html.parser’作为解析器来解析网页。

# 使用BeautifulSoup解析页面内容soup = BeautifulSoup(response.content, 'html.parser')

         3、查找元素:通过调用BeautifulSoup对象的find_all()方法来查找所有符合指定条件的元素。在这个例子中,使用了class属性为’tt’的div元素。      

# 查找所有<div class="tt">元素items = soup.find_all('div', class_='tt')

          4、收集数据:通过循环迭代每个找到的元素并提取所需的信息来收集数据。在这个例子中,利用get_text()方法获取元素的文本内容,并使用正则表达式对文本进行处理和分割,以得到产品名称和销量数据。

完整代码如下:

import requests
from bs4 import BeautifulSoup
import redef scrape_and_collect_data(url, num_items):headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}# 发送GET请求获取页面内容response = requests.get(url, headers=headers)# 使用BeautifulSoup解析页面内容soup = BeautifulSoup(response.content, 'html.parser')# 查找所有<div class="tt">元素items = soup.find_all('div', class_='tt')product_names = []sales_data = []# 收集数据for index, item in enumerate(items):if index >= num_items:breakitem_text = item.get_text(strip=True)item_text_without_original_price = re.sub(r'原价.*', '', item_text)  # 删除包括“原价”后的文本sales_div = item.find_next('div', class_='ss')if sales_div:# 提取销量信息并去除括号及其内部内容sales_info = re.sub(r'\([^()]*\)', '', sales_div.get_text(strip=True))sales_info_cut = sales_info.split('热销')[-1].split('件')[0].strip()  # 切片操作提取券后之后到'-'之前的内容product_names.append(item_text_without_original_price)sales_data.append(int(sales_info_cut))print(item_text_without_original_price)print(sales_info_cut)return product_names, sales_data# 要爬取的网页链接和指定爬取的条数
url = 'https://tophub.today/c/shopping'
num_items = 10  # 指定爬取前10条数据# 调用函数执行爬取并收集数据
product_names, sales_data = scrape_and_collect_data(url, num_items)

相关文章:

  • 蓝桥杯练习题-特殊日期
  • 【C++】二叉树进阶之二叉搜索树
  • 【漏洞复现】网康科技 NS-ASG 应用安全网关 SQL注入漏洞(CVE-2024-2330)
  • JUC之JMM
  • android metaRTC编译
  • 记录一次大厂面试题
  • Linux:导出环境变量命令export
  • Android7.1 ANR error 弹窗处理
  • 全局Ceph节点宕机处理
  • PDFPlumber解析PDF文本报错:AssertionError: (‘Unhandled’, 6)
  • SpringBoot基础入门
  • fastgpt本地详细部署以及配置
  • Spring boot 集成netty实现websocket通信
  • Android 二维码相关(一)
  • 微信小程序修改placeholder样式
  • .pyc 想到的一些问题
  • 10个确保微服务与容器安全的最佳实践
  • Docker入门(二) - Dockerfile
  • HTML5新特性总结
  • JS数组方法汇总
  • MyEclipse 8.0 GA 搭建 Struts2 + Spring2 + Hibernate3 (测试)
  • PHP 使用 Swoole - TaskWorker 实现异步操作 Mysql
  • spring-boot List转Page
  • swift基础之_对象 实例方法 对象方法。
  • 不用申请服务号就可以开发微信支付/支付宝/QQ钱包支付!附:直接可用的代码+demo...
  • 动手做个聊天室,前端工程师百无聊赖的人生
  • 基于MaxCompute打造轻盈的人人车移动端数据平台
  • 力扣(LeetCode)21
  • 一道闭包题引发的思考
  • MyCAT水平分库
  • ​TypeScript都不会用,也敢说会前端?
  • # .NET Framework中使用命名管道进行进程间通信
  • # 飞书APP集成平台-数字化落地
  • $.ajax()
  • $emit传递多个参数_PPC和MIPS指令集下二进制代码中函数参数个数的识别方法
  • (6)STL算法之转换
  • (BFS)hdoj2377-Bus Pass
  • (C++17) std算法之执行策略 execution
  • (C语言)strcpy与strcpy详解,与模拟实现
  • (LNMP) How To Install Linux, nginx, MySQL, PHP
  • (超详细)2-YOLOV5改进-添加SimAM注意力机制
  • (四)Controller接口控制器详解(三)
  • (一)使用Mybatis实现在student数据库中插入一个学生信息
  • (转)ObjectiveC 深浅拷贝学习
  • (转)PlayerPrefs在Windows下存到哪里去了?
  • (转)程序员疫苗:代码注入
  • (转)自己动手搭建Nginx+memcache+xdebug+php运行环境绿色版 For windows版
  • (转载)VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
  • .libPaths()设置包加载目录
  • .NET 2.0中新增的一些TryGet,TryParse等方法
  • .NET CORE 第一节 创建基本的 asp.net core
  • .net core IResultFilter 的 OnResultExecuted和OnResultExecuting的区别
  • .NET Standard / dotnet-core / net472 —— .NET 究竟应该如何大小写?
  • .NET Windows:删除文件夹后立即判断,有可能依然存在
  • .NET 材料检测系统崩溃分析