【全栈】SprintBoot+vue3迷你商城-扩展:利用python爬虫爬取商品数据

【全栈】SprintBoot+vue3迷你商城-扩展:利用python爬虫爬取商品数据

说明

我们在前几期中创建了用户与商品两个对象,用户通过注册来创建。而商品的创建则有些麻烦,为了我们以后测试、分页等等操作能够更好的实现,我们可以利用python爬虫来从淘宝中爬取一些商品的数据。添加到数据库中去。需要注意的是,这些商品信息都是从淘宝中爬取所得,爬取仅为练习、测试所用,如需购买,请到淘宝搜索对应商家的该商品进行购买

代码示例及其解析

我们获取一个页面的商品信息足够,所以我们可以使用selenium模块来直接爬取页面视图的HTML代码,在里面选择有用的信息,然后在将信息整理好,之后利用pymysql将整理好的数据对象插入到数据库中即可。

# 将所需要的信息对象化
class Goods:
    def __init__(self,goodsName,goodsImgUrl,goodsPrice):
        self.goodsName=goodsName
        self.goodsImgUrl=goodsImgUrl
        self.goodsPrice=goodsPrice

from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import re
import pymysql
from datetime import datetime

# 数据库连接信息
host = 'localhost'
user = 'root'
password = ''  # 填写MySQL的密码
database = 'mini_mall'	# 填写数据库的名称

# 创建连接
connection = pymysql.connect(host=host,
                            user=user,
                            password=password,
                            database=database,
                            charset='utf8mb4',
                            cursorclass=pymysql.cursors.DictCursor)

# 设置Chrome选项
chrome_options = Options()
chrome_options.add_argument("--headless")  # 无头模式,不打开浏览器窗口

# 初始化WebDriver
driver = webdriver.Chrome(options=chrome_options)

# 访问目标URL
driver.get("https://www.taobao.com")

# 获取页面内容
html = driver.page_source

# 关闭浏览器
driver.quit()
soup=BeautifulSoup(html,'html.parser')

# 分析HTML代码的规律,制定css选择器的搜索规则
for i in soup.select('.tb-pick-feeds-container a'):
    try:
        goods=Goods(i.select('.info-wrapper-title-text')[0].text,
                    # 利用正则表达式进行搜索
                    re.findall(r'\/\/img\.alicdn\.com.*\.jpg',str(i))[0],
                    float(i.select('.price-value')[0].text))
        
    # 有个别特例搜索不到直接跳过,继续搜索下一条而不会因报错而停止程序
    except IndexError:
        continue

    
    # 创建游标对象
    cursor = connection.cursor()

    # 执行 SQL 插入(需确保数据库中有goods表)
    sql_insert = "INSERT INTO goods (goodsName,goodsImgUrl,goodsPrice,merchantId,create_time,update_time) VALUES (%s, %s,%s,%s,%s,%s)"
    values = (goods.goodsName, goods.goodsImgUrl,goods.goodsPrice,1,datetime.now(),datetime.now())
    cursor.execute(sql_insert, values)


connection.commit()  
# 关闭游标和连接
cursor.close()
connection.close()

效果

我们直接运行该代码即可。

一次运行可以爬取淘宝页面中的一页数据。

在这里插入图片描述

总结

本期是一个扩展,我们通过python爬虫从淘宝上获取了一些商品数据,以便我们以后更好地练习、测试与商品相关的接口。

下期我们将开始写与用户有关的接口。

再次强调

这些商品信息都是从淘宝中爬取所得,爬取仅为练习、测试所用,如需购买,请到淘宝搜索对应商家的该商品进行购买

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值