百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

python爬虫之爬取商品数据 python爬虫内容

itomcoil 2024-12-30 04:41 34 浏览

不知不觉今年的520就过去了,祝没有脱单的小伙伴抓紧发挥你的独特的魅力,明年520之前脱单。恭喜已经脱单的朋友,祝你们幸福!

今年520为了给女友买礼物可也算是煞费苦心了,当然买礼物还不如帮她清空购物车来得直接一些。不知道各位小伙伴今年买了什么礼物啊。

除了重要的节日需要网上购买之外,平时她也是需要买日常的衣物,今天就来获取淘宝网的所有文胸数据,供她挑选,当然最后结账的也是你。

本次文章的字数可能会比之前多一些,我也是争取每一次爬取的技术都会提高一些,这样大家阅读起来也会轻松一些,不至于看不懂。今天的文章大概需要10分钟左右的时间才可以看完,希望各位小伙伴可以耐心一点。

随着时间的推移,文章难度需要提升,现在每篇文章都需要花两到3天的时间才可以完成,又要录制视频教程,所以会比之前更新的慢一些,希望小伙伴们可以理解。

在爬取信息之前需要先介绍一下,Python的一个自动化测试工具selenium,这个是本次的重点内容。如果熟悉selenium的小伙伴可以直接略过。

1.selenium简介

selenium是一个用于测试网站的自动化测试工具,支持很多主流的浏览器,比如:谷歌浏览器、火狐浏览器、IE、Safari等。

2.支持多个操作系统

如windows、Linux、IOS、Android等。

3、安装selenium

pip install Selenium

4、安装浏览器驱动

1、Chrome驱动文件下载:

https://chromedriver.storage.googleapis.com/index.html?path=2.35/

2、火狐浏览器驱动下载:

https://github.com/mozilla/geckodriver/releases/tag/v0.26.0

5、配置环境变量

配置环境变量的方法非常简单,首先将下载好的驱动进行解压,放到你安装Python的目录下,即可。

因为之前,在配置Python环境变量的时候,就将Python的目录放到我的电脑–>属性–>系统设置–>高级–>环境变量–>系统变量–>Path

Python安装路径

二、selenium快速入门

1、selenium提供8种定位方式

1、id

2、name

3、class name

4、tag name

5、link text

6、partial link text

7、xpath

8、css selector

2、定位元素的8种方式详解


3、selenium库下webdriver模块常用的方法与使用

控制浏览器的一些方法


4、代码实例


from selenium import webdriverimport time# 创建Chrome浏览器对象,这会在电脑中打开一个窗口browser = webdriver.Chrome()# 通过浏览器向服务器发起请求browser.get('https://www.baidu.com')time.sleep(3)# 刷新浏览器browser.refresh()# 最大化浏览器窗口browser.maximize_window()# 设置链接内容element = browser.find_element_by_link_text('抗击肺炎')# 点击'抗击肺炎'element.click()关于selenium的简单介绍就先到这里了,更多详细内容大家可以去selenium官方文档查看。

关于selenium的简单介绍就先到这里了,更多详细内容大家可以去selenium官方文档查看。

爬取数据


从上图,可以看到需要获取的信息是:价格、商品名称、付款人数、店铺名称。

现在我们开始进入主题。

首先,需要输入你要搜索商品的内容,然后根据内容去搜索淘宝信息,最后提取信息并保存。

1、搜素商品

我在这里定义一个搜索商品的函数和一个主函数。

搜索商品

在这里需要创建一个浏览器对象,并且根据该对象的get方法来发送请求。


从上图可以发现搜索框的id值为q,那么这样就简单很多了,有HTML基础的朋友肯定知道id值是唯一的。

通过id值可以获取到文本框的位置,并传入参数,然后点击搜索按钮。


从上图可以发现搜索按钮在一个类里面,那么可以通过这个类来定位到搜索按钮,并执行点击操作。

当点击搜索按钮之后,网页便会跳转到登录界面,要求我们登录,如下图所示:


登录成功后会发现,里面的数据总共有100页面。


上图是前三页的url地址,你会发现其实并没有太大的变化,经过测试发现,真正有效的参数是框起来的内容,它的变化会导致页面的跳转,很明显第一页的s=0,第二页s=44,第三页s=88,以此类推,之后就可以轻松做到翻页了。

搜搜商品的代码如下:


def search_product(key_word):    '''    :param key_word: 搜索关键字    :return:    '''    # 通过id值来获取文本框的位置,并传入关键字    browser.find_element_by_id('q').send_keys(key_word)    # 通过class来获取到搜索按钮的位置,并点击    browser.find_element_by_class_name('btn-search').click()    # 最大化窗口    browser.maximize_window()    time.sleep(15)    page = browser.find_element_by_xpath('//div[@class="total"]').text  # 共 100 页,    page = re.findall('(\d+)', page)[0] # findall返回一个列表    return page

2、获取商品信息并保存

获取商品信息相对比较简单,可以通过xpath方式来获取数据。在这里我就不再论述。在这边我创建了一个函数get_product来获取并保存信息。在保存信息的过程中使用到了csv模块,目的是将信息保存到csv里面。

代码如下:

def get_product():    divs = driver.find_elements_by_xpath('//div[@class="items"]/div[@class="item J_MouserOnverReq  "]')# 这里返回的是列表,注意:elements    for div in divs:        info = div.find_element_by_xpath('.//div[@class="row row-2 title"]/a').text        price = div.find_element_by_xpath('.//strong').text + '元'        nums = div.find_element_by_xpath('.//div[@class="deal-cnt"]').text        names = div.find_element_by_xpath('.//div[@class="shop"]/a').text        print(info, price, nums, names,sep='|')        with open('data3.csv', mode='a', newline='', encoding='utf-8') as file:            csv_writer = csv.writer(file, delimiter=',')    # 指定分隔符为逗号            csv_writer.writerow([info, price, nums, names])

3、构造URL实现翻页爬取

从上面的图片中可以发现连续三页URL的地址,其实真正变化并不是很多,经过测试发现,只有q和s两个参数是有用的。

构造出的url:https://s.taobao.com/search?q={}&s={}

因为q是你要搜索的商品,s是设置翻页的参数。这段代码就放在了主函数里面

代码如下:

def main():    browser.get('https://www.taobao.com/')  # 向服务器发送请求    page = search_product(key_word)    print('正在爬取第1页的数据')    get_product()   # 已经获得第1页的数据    page_nums = 1    while page_nums != page:        print('*'*100)        print('正在爬取第{}页的数据'.format(page_nums+1))        browser.get('https://s.taobao.com/search?q={}&s={}'.format(key_word, page_nums*44))        browser.implicitly_wait(10) # 等待10秒        get_product()        page_nums += 1

最后结果,如下图所示:


—— E N D ——

好了,又到了该说再见的时候了,希望我的文章可以给你带来知识,带给你帮助。同时也感谢你可以抽出你宝贵的时间来阅读,创作不易,如果你喜欢的话,点个关注再走吧。更多精彩内容会在后续更新,你的支持就是我创作的动力,我今后也会尽力给大家书写出更加优质的文章。

相关推荐

selenium(WEB自动化工具)

定义解释Selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7,8,9,10,11),MozillaF...

开发利器丨如何使用ELK设计微服务中的日志收集方案?

【摘要】微服务各个组件的相关实践会涉及到工具,本文将会介绍微服务日常开发的一些利器,这些工具帮助我们构建更加健壮的微服务系统,并帮助排查解决微服务系统中的问题与性能瓶颈等。我们将重点介绍微服务架构中...

高并发系统设计:应对每秒数万QPS的架构策略

当面试官问及"如何应对每秒几万QPS(QueriesPerSecond)"时,大概率是想知道你对高并发系统设计的理解有多少。本文将深入探讨从基础设施到应用层面的解决方案。01、理解...

2025 年每个 JavaScript 开发者都应该了解的功能

大家好,很高兴又见面了,我是"高级前端进阶",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发。1.Iteratorhelpers开发者...

JavaScript Array 对象

Array对象Array对象用于在变量中存储多个值:varcars=["Saab","Volvo","BMW"];第一个数组元素的索引值为0,第二个索引值为1,以此类推。更多有...

Gemini 2.5编程全球霸榜,谷歌重回AI王座,神秘模型曝光,奥特曼迎战

刚刚,Gemini2.5Pro编程登顶,6美元性价比碾压Claude3.7Sonnet。不仅如此,谷歌还暗藏着更强的编程模型Dragontail,这次是要彻底翻盘了。谷歌,彻底打了一场漂亮的翻...

动力节点最新JavaScript教程(高级篇),深入学习JavaScript

JavaScript是一种运行在浏览器中的解释型编程语言,它的解释器被称为JavaScript引擎,是浏览器的一部分,JavaScript广泛用于浏览器客户端编程,通常JavaScript脚本是通过嵌...

一文看懂Kiro,其 Spec工作流秒杀Cursor,可移植至Claude Code

当Cursor的“即兴编程”开始拖累项目质量,AWS新晋IDEKiro以Spec工作流打出“先规范后编码”的系统工程思维:需求-设计-任务三件套一次生成,文档与代码同步落地,复杂项目不...

「晚安·好梦」努力只能及格,拼命才能优秀

欢迎光临,浏览之前点击上面的音乐放松一下心情吧!喜欢的话给小编一个关注呀!Effortscanonlypass,anddesperatelycanbeexcellent.努力只能及格...

JavaScript 中 some 与 every 方法的区别是什么?

大家好,很高兴又见面了,我是姜茶的编程笔记,我们一起学习前端相关领域技术,共同进步,也欢迎大家关注、点赞、收藏、转发,您的支持是我不断创作的动力在JavaScript中,Array.protot...

10个高效的Python爬虫框架,你用过几个?

小型爬虫需求,requests库+bs4库就能解决;大型爬虫数据,尤其涉及异步抓取、内容管理及后续扩展等功能时,就需要用到爬虫框架了。下面介绍了10个爬虫框架,大家可以学习使用!1.Scrapysc...

12个高效的Python爬虫框架,你用过几个?

实现爬虫技术的编程环境有很多种,Java、Python、C++等都可以用来爬虫。但很多人选择Python来写爬虫,为什么呢?因为Python确实很适合做爬虫,丰富的第三方库十分强大,简单几行代码便可实...

pip3 install pyspider报错问题解决

运行如下命令报错:>>>pip3installpyspider观察上面的报错问题,需要安装pycurl。是到这个网址:http://www.lfd.uci.edu/~gohlke...

PySpider框架的使用

PysiderPysider是一个国人用Python编写的、带有强大的WebUI的网络爬虫系统,它支持多种数据库、任务监控、项目管理、结果查看、URL去重等强大的功能。安装pip3inst...

「机器学习」神经网络的激活函数、并通过python实现激活函数

神经网络的激活函数、并通过python实现whatis激活函数感知机的网络结构如下:左图中,偏置b没有被画出来,如果要表示出b,可以像右图那样做。用数学式来表示感知机:上面这个数学式子可以被改写:...