Python爬虫实战:selenium爬取电商平台商品数据,Flutter中网络图片加载和缓存源码分析

本文介绍了使用Python的Selenium库爬取电商平台商品数据,包括商品名称、商店、价格等信息。同时,探讨了在Flutter中处理网络图片的加载和缓存源码分析,帮助开发者了解网络爬虫和移动应用开发中的关键细节。
摘要由CSDN通过智能技术生成

目标


先介绍下我们本篇文章的目标,如图:

在这里插入图片描述

本篇文章计划获取商品的一些基本信息,如名称、商店、价格、是否自营、图片路径等等。

准备


首先要确认自己本地已经安装好了 Selenium 包括 Chrome ,并已经配置好了 ChromeDriver 。如果还没安装好,可以参考前面的前置准备。

分析


接下来我们就要分析一下了。

首先,我们的搜索关键字是 iPhone ,直接先翻到最后一页看下结果,发现有好多商品并不是 iPhone ,而是 iPhone 的手机壳,这个明显不是我们想要的结果,小编这里选择了一下品牌 Apple ,再翻到最后一页,这次就全都是手机了。

在这里插入图片描述

先把地址栏的地址 Copy 出来看一下,里面有很多无效参数:

https://search.jd.com/search?keyword=iPhone&enc=utf-8&qrst=1&rt=1&stop=1&vt=2&ev=exbrand_Apple%5E&page=199&s=5933&click=0

如果问小编怎么知道是无效参数还是有效参数,emmmmmmmmm

这个要么靠经验,一般大网站的参数的命名都是比较规范的,当然也不排除命名不规范的。还有一种办法就是试,小编这边试出来的结果是这样滴:

https://search.jd.com/Search?keyword=iPhone&ev=exbrand_Apple

第一个参数 keyword 就是我们需要的商品名称,第二个参数 ev 是品牌的参数。

接下来我们看如何获取商品的详细信息,我们使用 F12 打开开发者模式,使用看下具体的信息都放在哪里:

在这里插入图片描述

可以看到,我们想要获取的信息在这个页面的 DOM 节点中都能获取到。

接下来因为我们是使用 Selenium 来模拟浏览器访问电商网站,所以后续的接口分析也就不需要做了,直接获取浏览器显示的内容的源代码就可以轻松获取到各种信息。

获取商品列表页面


首先,我们需要构造一个获取商品列表页面的 URL ,这个上面已经得到了,接下来就是使用 Selenium 来获取这个页面了:

from selenium import webdriver

from selenium.common.exceptions import TimeoutException

driver = webdriver.Chrome()

driver.implicitly_wait(10)

driver.set_window_size(1280,800)

def index_page(page):

“”"

抓取索引页

:param page: 页码

“”"

print(‘正在爬取第’, str(page), ‘页数据’)

try:

url = ‘https://search.jd.com/Search?keyword=iPhone&ev=exbrand_Apple’

driver.get(url)

if page > 1:

input = driver.find_element_by_xpath(‘//*[@id=“J_bottomPage”]/span[2]/input’)

button = driver.find_element_by_xpath(‘//*[@id=“J_bottomPage”]/span[2]/a’)

input.clear()

input.send_keys(page)

button.click()

get_products()

except TimeoutException:

index_page(page)

这里我们依然使用隐式等待来进行 URL 访问,这里小编通过 xpath 的方式获取到了整个页面最下面的翻页组件:

在这里插入图片描述

小编这里的翻页实际上是使用这里的输入框和后面的确认按钮进行的。

获取商品详细数据


这里其实有一个坑,JD 的首页上的图片是懒加载的,就是当页面的滚动条没有滚到这个图片可以显示在屏幕上的位置的时候,这个图片是不会加载出来的。这就造成了小编一开始的只能获取到前 4 个商品的图片地址。

小编后来想了个办法,使用 JavaScript 来模拟滚动条滚动,先将所有的图片加载出来,然后再进行数据的获取,代码如下:

def get_products():

“”"

提取商品数据

“”"

js = ‘’’

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img



既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V:vip1024c 备注Python获取(资料价值较高,非无偿)
img

最后

Python崛起并且风靡,因为优点多、应用领域广、被大牛们认可。学习 Python 门槛很低,但它的晋级路线很多,通过它你能进入机器学习、数据挖掘、大数据,CS等更加高级的领域。Python可以做网络应用,可以做科学计算,数据分析,可以做网络爬虫,可以做机器学习、自然语言处理、可以写游戏、可以做桌面应用…Python可以做的很多,你需要学好基础,再选择明确的方向。这里给大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

👉Python所有方向的学习路线👈

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

👉Python必备开发工具👈

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

👉Python全套学习视频👈

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

👉实战案例👈

学python就与学数学一样,是不能只看书不做题的,直接看步骤和答案会让人误以为自己全都掌握了,但是碰到生题的时候还是会一筹莫展。

因此在学习python的过程中一定要记得多动手写代码,教程只需要看一两遍即可。

👉大厂面试真题👈

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

g_convert/0d8c31c50236a205928a1d8ae8a0b883.png)

👉大厂面试真题👈

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

爬取 脚本执行下面的命令,项目目录下会创建产品目录,所有的爬取到的商品图片和信息总体出现在里面。 python crawl.py supreme https://www.supremecommunity.com/season/spring-summer2020/droplist/2020-02-27/ 其他依赖 为了使用正确使用nike爬虫,你还需要: Chrome浏览器(chrome 85版) ChromeDriver 85.0.4183.87 缺失它们不会影响其他爬虫的使用。 配置问题 通过修改IMAGES_STORE可以自定义文件的存储位置。 默认开启了AUTOTHROTTLE,可以通过设置AUTOTHROTTLE_ENABLED为False关闭。 基本使用 项目下执行命令: python crawl.py brand start_url... 把brand替换为品牌名。 把start_url替换为要开始爬取的网页。 爬虫 最高 爬取某一季所有周的商品 python crawl.py supreme https://www.supremecommunity.com/season/spring-summer2020/droplists/ 浏览某一周所有的商品 python crawl.py supreme https://www.supremecommunity.com/season/spring-summer2020/droplist/2020-02-27/ 游走取一些周的商品 python crawl.py supreme https://www.supremecommunity.com/season/spring-summer2020/droplist/2020-02-27/ https://www.supremecommunity.com/season/spring-summer2020/droplist/2020-05-21/ 资本 去取某一特定下的所有商品 python crawl.py kapital https://www.kapital-webshop.jp/category/W_COAT/ 耐克 爬取当前搜索的商品(包括所有颜色) python crawl.py nike https://www.nike.com/cn/w?q=CU6525&vst=CU6525 熊砖 去取当前分类的所有商品 python crawl.py bearbrick http://www.bearbrick.com/product/12_0 已知问题:BearBrickLoader 的category_in无法达到预期的行为。 United Arrows 网上商店 取当前商品 python crawl.py uastore https://store.united-arrows.co.jp/shop/mt/goods.html?gid=52711245 特拉维斯·斯科特 爬取所有商品 python crawl.py ts https://shop.travisscott.com/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值