Python读取阿里法拍网的html+解决登录cookie

 效果图

import time
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from lxml import etreedef get_taobao_auction_data():# 配置Chrome选项chrome_options = Options()chrome_options.add_argument('--headless')  # 无头模式chrome_options.add_argument('--disable-gpu')chrome_options.add_argument('--no-sandbox')chrome_options.add_argument('--disable-dev-shm-usage')chrome_options.add_argument('--disable-blink-features=AutomationControlled')chrome_options.add_argument('--disable-extensions')chrome_options.add_argument('--ignore-certificate-errors')chrome_options.add_argument('--window-size=1920,1080')# 设置Chrome浏览器路径chrome_options.binary_location = r"C:\Program Files\Google\Chrome\Application\chrome.exe"# 设置User-Agentchrome_options.add_argument('user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36')try:print("正在初始化Chrome驱动...")service = Service(ChromeDriverManager().install())driver = webdriver.Chrome(service=service, options=chrome_options)print("Chrome驱动初始化成功")# 设置页面加载超时时间driver.set_page_load_timeout(30)# 访问目标网页url = "https://zc-paimai.taobao.com/wow/pm/default/pc/zichansearch?fcatV4Ids=[%22206067201%22]&corp_type=[%226%22]&structFieldMap={%22corp_type%22:[%226%22]}&page=1"driver.get(url)# 等待页面加载print("等待页面加载...")time.sleep(10)# 执行JavaScript滚动页面driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")time.sleep(2)# 获取页面内容page_source = driver.page_source# 保存原始响应到文件with open('taobao_auction.html', 'w', encoding='utf-8') as f:f.write(page_source)print("页面内容已保存到 taobao_auction.html")# 使用lxml解析HTMLhtml = etree.HTML(page_source)# 解析拍卖项目 - 更新XPath以匹配实际结构items = html.xpath('//div[contains(@style, "border: 1px solid rgb(230, 230, 230)")]')if items:print(f"\n找到 {len(items)} 个拍卖项目")for item in items:try:# 提取详情链接detail_url = item.xpath('.//a/@href')detail_url = "https:" + detail_url[0] if detail_url else "无链接"# 提取图片URLimg_url = item.xpath('.//img[contains(@style, "object-fit: cover")]/@src')img_url = "https:" + img_url[0] if img_url else "无图片"# 提取标题title = item.xpath('.//span[contains(@class, "text") and contains(@style, "font-size: 16px")]/@title')title = title[0].strip() if title else "无标题"# 提取当前价格current_price = item.xpath('.//div[contains(text(), "当前价")]/following-sibling::div//span[contains(@style, "font-size: 24px")]/text()')current_price = current_price[0].strip() if current_price else "无价格"# 提取评估价eval_price = item.xpath('.//div[contains(text(), "评估价")]/following-sibling::span[2]/text()')eval_price = eval_price[0].strip() if eval_price else "无评估价"# 提取拍卖状态status = item.xpath('.//div[contains(@style, "background: rgb(235, 0, 69)")]/text()')status = status[0].strip() if status else "无状态"# 提取围观次数views = item.xpath('.//span[contains(text(), "次围观")]/preceding-sibling::span/text()')views = views[0].strip() if views else "0"# 提取报名人数signups = item.xpath('.//span[contains(text(), "人报名")]/preceding-sibling::span/text()')signups = signups[0].strip() if signups else "0"print("\n拍卖项目信息:")print(f"标题: {title}")print(f"当前价: {current_price}")print(f"评估价: {eval_price}")print(f"状态: {status}")print(f"围观次数: {views}")print(f"报名人数: {signups}")print(f"图片URL: {img_url}")print(f"详情链接: {detail_url}")print("-" * 50)except Exception as e:print(f"解析项目时出错: {e}")continueelse:print("未找到拍卖项目,请检查页面结构")print("请查看保存的HTML文件以分析页面结构")except Exception as e:print(f"发生错误: {e}")finally:# 关闭浏览器try:driver.quit()except:passif __name__ == "__main__":get_taobao_auction_data()

获取登录cookie

import time
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from lxml import etree
import redef get_auction_detail():# 1. 采集页面并保存html(如已有可跳过)chrome_options = Options()chrome_options.add_argument('--disable-gpu')chrome_options.add_argument('--no-sandbox')chrome_options.add_argument('--disable-dev-shm-usage')chrome_options.add_argument('--disable-blink-features=AutomationControlled')chrome_options.add_argument('--disable-extensions')chrome_options.add_argument('--ignore-certificate-errors')chrome_options.add_argument('--window-size=1920,1080')chrome_options.binary_location = r"C:\Program Files\Google\Chrome\Application\chrome.exe"chrome_options.add_argument('user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36')try:print("正在初始化Chrome驱动...")service = Service(ChromeDriverManager().install())driver = webdriver.Chrome(service=service, options=chrome_options)print("Chrome驱动初始化成功")driver.set_page_load_timeout(30)print("访问淘宝首页...")driver.get("https://www.taobao.com")time.sleep(3)print("请在浏览器中手动登录淘宝...")input("登录完成后请按回车键继续...")cookies = driver.get_cookies()print("已获取登录Cookie")url = "https://sf-item.taobao.com/sf_item/903309584546.htm"print(f"正在访问拍卖详情页: {url}")driver.get(url)print("等待页面加载...")time.sleep(10)driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")time.sleep(2)page_source = driver.page_sourcewith open('auction_detail.html', 'w', encoding='utf-8') as f:f.write(page_source)print("页面内容已保存到 auction_detail.html")except Exception as e:print(f"采集页面时发生错误: {e}")finally:try:driver.quit()except:pass# 2. 解析本地auction_detail.html,提取全部关键信息print("\n正在解析 auction_detail.html ...")with open('auction_detail.html', 'r', encoding='utf-8') as f:html = etree.HTML(f.read())def get_first(xpath_expr):res = html.xpath(xpath_expr)return res[0].strip() if res else ''# 标题title = get_first('//title/text()')# 当前价current_price = get_first('//span[contains(@class,"pm-current-price")]/em/text()')if not current_price:current_price = get_first('//span[contains(@class,"J_Price")]/em/text()')# 变卖价、保证金、加价幅度、评估价、变卖周期、延时周期、竞价规则(表格)def get_table_value(key):td = html.xpath(f'//table//span[contains(text(),"{key}")]/../../following-sibling::td[1]//span[contains(@class,"family-tahoma")]/text()')if not td:# 兼容" : "后直接文本td = html.xpath(f'//table//span[contains(text(),"{key}")]/../following-sibling::div//span[contains(@class,"family-tahoma")]/text()')if not td:# 兼容" : "后直接文本(无span)td = html.xpath(f'//table//span[contains(text(),"{key}")]/../../following-sibling::td[1]//text()')return td[0].strip() if td else ''sell_price = get_table_value('变卖价')deposit = get_table_value('保证金')increase = get_table_value('加价幅度')eval_price = get_table_value('评估价')sell_period = get_table_value('变卖周期')delay_period = get_table_value('延时周期')rule = ''rule_td = html.xpath('//table//span[contains(text(),"竞价规则")]/../../following-sibling::td[1]//span/text()')if rule_td:rule = rule_td[0].strip()else:# 兼容" : "后直接文本rule = get_first('//table//span[contains(text(),"竞价规则")]/../following-sibling::div//span/text()')# 主办法院court = get_first('//div[@class="unit-org-content"]/p/text()')# 拍卖公司及联系人company = get_first('//em[contains(@class,"contact-unit-person")]/text()')# 联系方式(手机号)phone = get_first('//span[@class="c-title" and contains(text(),"手机")]/following-sibling::span[@class="c-text"]/text()')# 公告链接notice_link = html.xpath('//a[contains(@class,"view-ano")]/@href')notice_link = notice_link[0] if notice_link else ''if notice_link and not notice_link.startswith('http'):notice_link = 'https:' + notice_linkprint("\n拍卖详情信息:")print(f"标题: {title}")print(f"当前价: {current_price}")print(f"变卖价: {sell_price}")print(f"保证金: {deposit}")print(f"加价幅度: {increase}")print(f"评估价: {eval_price}")print(f"变卖周期: {sell_period}")print(f"延时周期: {delay_period}")print(f"竞价规则: {rule}")print(f"主办法院: {court}")print(f"拍卖公司及联系人: {company}")print(f"联系方式: {phone}")print(f"公告链接: {notice_link}")print("-" * 50)if __name__ == "__main__":get_auction_detail() 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/web/82837.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【win | docker开启远程配置】使用 SSH 隧道访问 Docker的前操作

在主机A pycharm如何连接远程主机B win docker? 需要win docker配置什么? 快捷配置-主机B win OpenSSH SSH Server https://blog.csdn.net/z164470/article/details/121683333 winR,打开命令行,输入net start sshd,启动SSH。 或者右击我的电脑&#…

Cursor生成Java的架构设计图

文章目录 整体说明一、背景二、前置条件三、生成 Promt四、结果查看五、结果编辑 摘要: Cursor生成Java的架构设计图 关键词: Cursor、人工智能 、开发工具、Java 架构设计图 整体说明 Cursor 作为现在非常好用的开发工具,非常的火爆&#…

1Panel运行的.net程序无法读取系统字体(因为使用了docker)

问题来源 我之前都是使用的宝塔面板,之前我也部署过我的程序,就没有什么问题,但是上次我部署我的程序的时候,就提示无法找到字体Arial。 我的程序中使用该字体生成验证码。 我多次安装了微软的字体包,但是依旧没有效…

面试总结。

一、回流(重排)与重绘(Repaint) 优化回答: 概念区分: 回流(Reflow/Relayout):当元素的几何属性(如宽高、位置、隐藏 / 显示)发生改变时&#xff…

TensorFlow深度学习实战(20)——自组织映射详解

TensorFlow深度学习实战(20)——自组织映射详解 0. 前言1. 自组织映射原理2. 自组织映射的优缺点3. 使用自组织映射实现颜色映射小结系列链接 0. 前言 自组织映射 (Self-Organizing Map, SOM) 是一种无监督学习算法,主要用于高维数据的降维、…

Go内存泄漏排查与修复最佳实践

一、引言 即使Go语言拥有强大的垃圾回收机制,内存泄漏仍然是我们在生产环境中经常面临的挑战。与传统印象不同,垃圾回收并不是万能的"记忆清道夫",它只能处理那些不再被引用的内存,而无法识别那些仍被引用但实际上不再…

LeetCode刷题 -- 542. 01矩阵 基于 DFS 更新优化的多源最短路径实现

LeetCode刷题 – 542. 01矩阵 基于 DFS 更新优化的多源最短路径实现 题目描述简述 给定一个 m x n 的二进制矩阵 mat,其中: 每个元素为 0 或 1返回一个同样大小的矩阵 ans,其中 ans[i][j] 表示 mat[i][j] 到最近 0 的最短曼哈顿距离 算法思…

MySQL用户远程访问权限设置

mysql相关指令 一. MySQL给用户添加远程访问权限1. 创建或者修改用户权限方法一:创建用户并授予远程访问权限方法二:修改现有用户的访问限制方法三:授予特定数据库的特定权限 2. 修改 MySQL 配置文件3. 安全最佳实践4. 测试远程连接5. 撤销权…

如何使用 BPF 分析 Linux 内存泄漏,Linux 性能调优之 BPF 分析内核态、用户态内存泄漏

写在前面 博文内容为 通过 BCC 工具集 memleak 进行内存泄漏分析的简单认知包括 memleak 脚本简单认知,内核态(内核模块)、用户态(Java,Python,C)内存跟踪泄漏分析 Demo理解不足小伙伴帮忙指正 😃,生活加油知其不可奈何而安之若命,德之至也。----《庄子内篇人间世》 …

谷歌Sign Gemma: AI手语翻译,沟通从此无界!

嘿,朋友们!想象一下,语言不再是交流的障碍,每个人都能顺畅表达与理解。这听起来是不是很酷?谷歌最新发布的Sign Gemma AI模型,正朝着这个激动人心的未来迈出了一大步!它就像一位随身的、不知疲倦…

全生命周期的智慧城市管理

前言 全生命周期的智慧城市管理。未来,城市将在 实现从基础设施建设、日常运营到数据管理的 全生命周期统筹。这将避免过去智慧城市建设 中出现的“碎片化”问题,实现资源的高效配 置和项目的协调发展。城市管理者将运用先进 的信息技术,如物…

最新Spring Security实战教程(十七)企业级安全方案设计 - 多因素认证(MFA)实现

🌷 古之立大事者,不惟有超世之才,亦必有坚忍不拔之志 🎐 个人CSND主页——Micro麦可乐的博客 🐥《Docker实操教程》专栏以最新的Centos版本为基础进行Docker实操教程,入门到实战 🌺《RabbitMQ》…

logstash拉取redisStream的流数据,并存储ES

先说结论, window验证logstash截至2025-06-06 是没有原生支持的。 为啥考虑用redisStream呢?因为不想引入三方的kafka等组件, 让服务部署轻量化, 所以使用现有的redis来实现, 为啥不用list呢? 已经用strea…

IEC 61347-1:2015 灯控制装置安全通用要求详解

IEC 61347-1:2015 灯控制装置安全通用要求详解 IEC 61347-1:2015《灯控制装置 第1部分:一般要求和安全要求》是国际电工委员会(IEC)制定的关于灯控制装置安全性能的核心基础标准。它为各类用于启动和稳定工作电流的灯控制装置(如…

26、跳表

在C标准库中,std::map 和 std::set 是使用红黑树作为底层数据结构的容器。 红黑树是一种自平衡二叉搜索树,能够保证插入、删除和查找操作的时间复杂度为O(log n)。 以下是一些使用红黑树的C标准库容器: std::map:一种关联容器&a…

LabVIEW音频测试分析

LabVIEW通过读取指定WAV 文件,实现对音频信号的播放、多维度测量分析功能,为音频设备研发、声学研究及质量检测提供专业工具支持。 主要功能 文件读取与播放:支持持续读取示例数据文件夹内的 WAV 文件,可实时播放音频以监听被测信…

JUC并发编程(二)Monitor/自旋/轻量级/锁膨胀/wait/notify/锁消除

目录 一 基础 1 概念 2 卖票问题 3 转账问题 二 锁机制与优化策略 0 Monitor 1 轻量级锁 2 锁膨胀 3 自旋 4 偏向锁 5 锁消除 6 wait /notify 7 sleep与wait的对比 8 join原理 一 基础 1 概念 临界区 一段代码块内如果存在对共享资源的多线程读写操作&#xf…

Doris 与 Elasticsearch:谁更适合你的数据分析需求?

一、Doris 和 Elasticsearch 的基本概念 (一)Doris 是什么? Doris 是一个用于数据分析的分布式 MPP(大规模并行处理)数据库。它主要用于存储和分析大量的结构化数据(比如表格数据)&#xff0c…

使用Virtual Serial Port Driver+com2tcp(tcp2com)进行两台电脑的串口通讯

使用Virtual Serial Port Drivercom2tcp或tcp2com进行两台电脑的串口通讯 问题说明解决方案方案三具体操作流程网上教程软件安装拓扑图准备工作com2tcp和tcp2com操作使用串口助手进行验证 方案三存在的问题数据错误通讯延时 问题说明 最近想进行串口通讯的一个测试&#xff0c…

transformer和 RNN以及他的几个变体区别 改进

Transformer、RNN 及其变体(LSTM/GRU)是深度学习中处理序列数据的核心模型,但它们的架构设计和应用场景有显著差异。以下从技术原理、优缺点和适用场景三个维度进行对比分析: 核心架构对比 模型核心机制并行计算能力长序列依赖处…