【Python】爬虫入门级实战讲解:爬取商城的商品名称及价格

时间:2024-04-05 21:17:29

需求:

1.对于某某商城,爬取其商品名称和商品价格

2.要求:用户动态输入爬取特定商品;

3.爬取结果导入excel表格,并写入数据库中;

思路:

1.查看搜索商品的接口信息,包括接口名称,接口方法(get/post),接口请求参数,及请求头

2.爬取出来的信息,利用正则表达进行抽取有用信息(商品名称,价格)

3.对抽取出来的信息进行拼接及优化展示

4.总共只需三个函数即可,一个利用requests调用搜索接口,获得返回信息,第二个利用re模块去正则表达规则去提取商品名称和价格,第三个优化展示(美观&直观效果)

步骤:

一。第一步:打开F12查看接口信息,取得接口名称,接口调用方法(post),请求头及参数

【Python】爬虫入门级实战讲解:爬取商城的商品名称及价格

函数如下:

【Python】爬虫入门级实战讲解:爬取商城的商品名称及价格

其中:(1). headers是请求头,字段Authorization是接口授权,是必须的

   (2). body是请求参数,字段keywords就是客户输入的搜索词,这边使用input函数目的为了让客户自己输入想搜索的商品

(3). requests.post()即使用post方法,其中html是接口地址,headers是请求头,json是请求参数

二 。第二步,对于返回的信息r.text。我们需要进行提取关键信息:商品名称和商品价格

r.text显示如下:

【Python】爬虫入门级实战讲解:爬取商城的商品名称及价格

函数如下:

【Python】爬虫入门级实战讲解:爬取商城的商品名称及价格

其中:(1). \"goodsInfoName\":\".*?\"和\"salePrice\":\d+\.?\d?\d?,是正则表达规则,把商品价格和商品名称匹配出来

(2)name里面储存的都是商品名称,price里面存储的都是商品价格,这时我们需要进一步处理,把商品名称和商品价格进行匹配在一起,显示出来类似这样[["salePrice":200.00],["salePrice":199.99]],所以使用split把字段名称salePrice去掉,去后半段的价格。显示为name_iter=[200.00,199.99],price_iter=["商品名称1","商品名称2"]。

(3)最后一行,则是为了把商品名称和商品价格进行组合,显示为targetData=["商品名称1":200.00,"商品名称2":199.99],这就完美了

(4)eval()函数,则是为了去掉一层"",加和不加eval()函数的差别见下图:价格是字符串类型,利用eval()变为整型

【Python】爬虫入门级实战讲解:爬取商城的商品名称及价格

三。第三步,把数据展示的更美观

【Python】爬虫入门级实战讲解:爬取商城的商品名称及价格

其中:\t是制表符,count起到序号的作用

最终展示结果:

【Python】爬虫入门级实战讲解:爬取商城的商品名称及价格

打开爬虫结果.xls,显示如下: 

【Python】爬虫入门级实战讲解:爬取商城的商品名称及价格

下面附上完整代码:

【Python】爬虫入门级实战讲解:爬取商城的商品名称及价格

v1.1

版本更新优化:第三列单元格宽度拉长,且居中显示

【Python】爬虫入门级实战讲解:爬取商城的商品名称及价格

显示如下:

【Python】爬虫入门级实战讲解:爬取商城的商品名称及价格

V1.2 加入需求:爬出的结果写入数据库,代码如下: 

【Python】爬虫入门级实战讲解:爬取商城的商品名称及价格

效果如下:

【Python】爬虫入门级实战讲解:爬取商城的商品名称及价格