【全栈】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爬虫
从淘宝上获取了一些商品数据,以便我们以后更好地练习、测试与商品相关的接口。
下期我们将开始写与用户有关的接口。
再次强调
这些商品信息都是从淘宝中爬取所得,爬取仅为练习、测试所用,如需购买,请到淘宝搜索对应商家的该商品进行购买