【Pyhton爬虫实战】爬取京东商城的商品信息

news/2024/5/12 4:19:34

爬取京东商城的商品信息,并将数据以Dataframe形式展示

from selenium.webdriver import Chrome, ChromeOptions
import re
import pymysql
from selenium.webdriver.common.by import By
import collections
import pandas as pdclass Spider():def __init__(self):self.browser = Noneself.info_diclist = list()def onepage_info_by_selenium(self, browser, url):"""获取详情页数据"""# browser.get("https://item.jd.com/100098751450.html")browser.get(url)grand = browser.find_element(by=By.CSS_SELECTOR, value="ul[id='parameter-brand'][class='p-parameter-list']")temp_dic = dict()# 品牌单独获取temp = re.split(r":\s{0,}", grand.text)temp_dic[temp[0]] = temp[1]info = browser.find_element(by=By.CSS_SELECTOR, value="ul[class='parameter2 p-parameter-list']")temp = re.findall(r"\S+:\s{0,}\S+", info.text)for i in temp:j = re.split(r":\s{0,}", i)temp_dic[j[0]] = j[1]# 获取好评差评# browser.find_element(by=By.CSS_SELECTOR, value="[data-tab='trigger'][data-anchor='#comment']").click()self.info_diclist.append(temp_dic)# input("end: ")def getmain_by_selenium(self):"""使用selenium操作主页并写入cookie"""browser = Chrome()browser.get('https://www.jd.com')cookies = self.get_cookie()for cookie in cookies:browser.add_cookie(cookie)return browserdef get_search_result(self, browser, key) -> list:"""将查询到的所有商品连接保存到列表"""inputbar = browser.find_element(by=By.ID, value='key')inputbar.send_keys(key)browser.find_element(by=By.CSS_SELECTOR, value="[class='button'][aria-label='搜索']").click()browser.implicitly_wait(5)hrefs = browser.find_elements(by=By.CSS_SELECTOR, value="div[class='p-img'] a[target='_blank']")return [href.get_attribute(name='href') for href in hrefs]def get_info(self):"""获取详细信息"""browser = self.getmain_by_selenium()results = self.get_search_result(browser, "投影仪")for url in results[:3]:self.onepage_info_by_selenium(browser, url=url)self.show_as_dataframe()input("end: ")def show_as_dataframe(self):"""将字典展示为Dataframe"""data = pd.DataFrame(self.info_diclist)print(data)def get_cookie(self):"""从数据库中获取cookie"""db = pymysql.connect(host='127.0.0.1',user='root',password='123456',charset='utf8',database='draft',port=3306)cursor = db.cursor()cursor.execute(query="SELECT COOKIE FROM COOKIES WHERE WEB_NAME='jingdong'")cookie = eval(cursor.fetchall()[0][0])cursor.close()db.close()return cookiedef main():Spider().get_info()if __name__ == '__main__':main()


http://www.mrgr.cn/p/20436357

相关文章

XMU《计算机网络与通信》第四次实验报告

计算机网络 实验四 通信 这次实验的话,我的报告参考意义不大,毕竟这次实验的主要难点是完成那两个代码,但是我报告中没有任何对于代码的解释。 大家如果需要的话,我的两个代码可以在这里下载,仅供参考:点击下载。 一、个人信息 姓名:XXX 学号:XXXXXXXXXXXXXX 二、实验目…

XMU《计算机网络与通信》第二次实验报告

实验二 实验报告 一、个人信息 姓名:XXX 学号:XXXXXXXXXXXXXX 二、实验目的学习捕获和分析网络数据包掌握以太网MAC帧、802.11数据帧和IPv4数据包的构成,了解各字段的含义掌握ICMP协议,ping和tracert指令的工作原理掌握ARP协议的请求/响应机理三、实验内容与结果分析 任务 …

[Python急救站]人脸识别技术练习

这段时间做了一个用于初学者学习人脸识别系统的程序,在上代码时,先给说说事前准备: 首先我们需要一个OpenCV的一个haarcascade_frontalface_default.xml文件,只要去GitHub上面即可下载:https://github.com/opencv/opencv 点击Code,选择Download ZIP,下载后解压在目录下o…

用Excel做一个功能完备的仓库管理系统

1 基本设计思路 用到的Excel技术:sumif, vlookup, 表格(table)。基本思路:在有基础的商品、仓库等信息的情况下,对商品的每一个操作都有对应的单据,然后再汇总统计。标识:为了在不同的维度统计数量,各单据…

从零入门区块链和比特币(第三期)

欢迎来到我的区块链与比特币入门指南!如果你对区块链和比特币感兴趣,但不知道从何开始,那么你来对地方了。本博客将为你提供一个简明扼要的介绍,帮助你了解这个领域的基础知识,并引导你进一步探索这个激动人心的领域。…

Ocelot系列文章01---简介

一、项目简介 Ocelot是一个用.NET Core实现并开源的API网关,它功能强大,包括了:路由、请求聚合、服务发现、认证、鉴权、限流熔断、并内置了负载均衡器与Service Fabric、Consul集成。 1、请求转发地址配置 通过在json文件简单配置,就可以实现简易的网关,它可以接受所有客…

【11-决策树的奥秘:使用Scikit-learn构建和优化模型】

文章目录 前言决策树简介安装和导入必需的包选择数据集分割数据集构建决策树模型模型评估可视化决策树优化决策树结论前言 决策树是一种基本的机器学习方法,它模拟人类决策过程以分类数据或预测结果。在这篇博文中,我们将深入了解如何在Python的Scikit-learn库中构建和优化决…

编写一个函数fun,它的功能是:实现两个字符串的连接(不使用库函数strcat),即把p2所指的字符串连接到p1所指的字符串后。

本文收录于专栏:算法之翼 https://blog.csdn.net/weixin_52908342/category_10943144.html 订阅后本专栏全部文章可见。 本文含有题目的题干、解题思路、解题思路、解题代码、代码解析。本文分别包含C语言、C++、Java、Python四种语言的解法完整代码和详细的解析。 题干 编写…

MBIST和BISR+循环移位和强制转换+verdi操作+vip需要disable auto recording+vim设置某行高亮+python模拟find命令

MBIST和BISR https://blog.csdn.net/liubin1222/article/details/103995449 https://zhuanlan.zhihu.com/p/161185302 进行内存修复需要两步:首先在可修复内存测试期间,由MBIST控制器诊断出的故障。第二步是修复内存,确认修复签名。可修复的存储器都有带修复签名的寄存器。 …

力扣-566. 重塑矩阵

1. 题目 题目地址(566. 重塑矩阵 - 力扣(LeetCode)) https://leetcode.cn/problems/reshape-the-matrix/ 题目描述 在 MATLAB 中,有一个非常有用的函数 reshape ,它可以将一个 m x n 矩阵重塑为另一个大小不同(r x c)的新矩阵,但保留其原始数据。 给你一个由二维数组 ma…

细致讲解——不同类型LSA是作用以及相互之间的联系

目录 一.常见的LSA类型 二.OSPF特殊区域 1.区域类型 2.stub区域和totally stub区域 (1)stub区域 (2)totally stub区域 3.nssa区域和totally nssa区域 (1)nssa区域 (2)totall…

【Godot4.2】有序和无序列表函数库 - myList

概述 在打印输出或其他地方可能需要构建有序或无序列表。本质就是构造和维护一个纯文本数组。并用格式化文本形式,输出带序号或前缀字符的多行文本。 为此我专门设计了一个类myList,来完成这项任务。 代码 以下是myList类的完整代码: # …

《HelloGitHub》第 97 期

这里有实战项目、入门教程、黑科技、开源书籍、大厂开源项目等,涵盖多种编程语言 Python、Java、Go、C/C++、Swift...让你在短时间内感受到开源的魅力,对编程产生兴趣!兴趣是最好的老师,HelloGitHub 让你对编程感兴趣!简介 HelloGitHub 分享 GitHub 上有趣、入门级的开源项…

Docker从无到有

主要为windows下docker的安装与使用~ 初始Docker Docker理解 对于docker的加简介,我们可以官网获取它的概念,接下来就从什么是docker、为什么要使用docker以及它的作用来进行一个快速入门 前提:项目在发布时,不仅需要其jar包同…

探索矿业数字化平台:实现智能化采矿与管理

随着信息技术的迅猛发展,矿业领域也在逐步实现数字化转型。数字化平台的出现为矿业企业带来了更高效、更智能的采矿与管理方式。本文将探讨矿业数字化平台的意义、特点以及未来发展方向。 ### 1. 数字化平台的意义 传统的矿业生产和管理方式存在诸多问题&#xff…

【学习笔记】基础算法:二次离线莫队/回滚莫队

5k_sync_closer【学习笔记】基础算法:二次离线莫队/回滚莫队 二次离线莫队前置知识:莫队前置知识:值域分块 值域分块,就是对 \(A\) 的值域进行分块,每个块维护该值域内数的个数众所周知,莫队的复杂度是 \(O(n \sqrt m)\) 的,而在维护一些问题时左右端点移动一格并不是 \…

微信小程序:8.WXSS

WXSS和CSS的关系 WXSS具有CSS大部分特性,同时,WXSS还对CSS进行扩充以及修改,适应微信小程序的开发。 与CSS相比,WXSS扩展的特性有: rpx尺寸单位imprt样式导入 rpx尺寸单位 rpx是微信小程序中独有的,用来…

Facebook的未知力量:数字世界的新引擎

在数字化的时代,社交媒体已经成为了我们日常生活中不可或缺的一部分,而Facebook作为其中的巨头,其影响力远远超出了我们的想象。但是,Facebook背后隐藏的力量和影响远不止于此,它正逐渐成为数字世界的新引擎&#xff0…

加密的艺术:密文的创建和校验

这是我们今天要探讨的数据加密技术。数据的保密是对数据加密、解密的统称,用学院派的说法就是,使用某种算法改变了信息原本的形态,使攻击者即使窃取了信息也因为没有对应的解密的方法也无法获取当信息的真实内容。概述 在我很喜欢的一部(根据真实事件改编)的电影《模仿游戏…

边缘计算在视频监控领域的应用

一、边缘计算在视频监控领域的应用 运用边缘计算解决视频监控问题,可以带来许多优势。以下是一些具体的应用示例: 实时分析与处理:在视频监控系统中,边缘计算盒子可以实时处理和分析视频流,实现对监控画面的智能识别…