前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python爬虫案例:采集青创网批发商品数据(附代码)

Python爬虫案例:采集青创网批发商品数据(附代码)

作者头像
松鼠爱吃饼干
发布2022-03-30 20:26:51
6080
发布2022-03-30 20:26:51
举报
文章被收录于专栏:Python分享

开发环境

  • Python 3.8
  • Pycharm 2021.2

模块使用

  • selenium >>> pip install selenium==3.141.0 (指定版本安装)
  • time
  • csv

selenium 模拟人的行为去操作浏览器

正常爬虫 >>> requests Python代码模拟浏览器对于服务器发送请求

selenium >>> 用python代码 >>> 浏览器驱动 >>> 浏览器

selenium 不仅仅可以控制鼠标点击, 还能控制键盘

爬虫代码

代码语言:javascript
复制
#  导入模块
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
# 导入csv模块
import csv
# 导入时间模块
import time
# 输入你想要搜索的商品关键词:
key_word = input('请输入你搜索关键词: ')

f = open(f'{key_word}商品.csv', mode='a', encoding='utf-8', newline='')
# 快速替换小技巧  选择要替换内容 按住ctrl + R 输入 正则表达式匹配规则 替换
csv_writer = csv.DictWriter(f, fieldnames=[
    '标题',
    '销量',
    '价格',
    '货号',
    '店铺名字',
    '店铺年份',
    '地址',
    '详情页',
])
csv_writer.writeheader()  # 写入表头
# 实例化一个浏览器对象
driver = webdriver.Chrome()  # 不指定路径 1. 你浏览器驱动文件和代码放在一起的 2. 浏览器驱动文件放在python安装目录下面
"""
78行代码报错原因:
    1. 驱动路径
    2. 驱动版本是否和谷歌浏览器版本相近
"""
# 打开网站
driver.get('https://www.17qcc.com/')
# 定位元素标签, 就可以用 css 或者 xpath
# 通过css选择器查找元素
driver.find_element_by_css_selector('#keywords').send_keys(key_word)
# driver.find_elements_by_css_selector() 取多个标签
driver.find_element_by_css_selector('#keywords').send_keys(Keys.ENTER)


# time.sleep(10) 死等 一定要等够10秒才会继续下面代码
def get_shop_info():
    driver.implicitly_wait(10)  # 隐式等待10s  等他数据加载完成 什么时候加载完 就继续运行下面的代码
    # lis返回的是列表, 元素个数只有70个, 71取不到所以报错
    # lis[0] 也报错 >>>> 你解析数据没有提取出来, 返回的 空列表 []
    # 解析数据 取值报错 1. 解析语法 写的有问题  2. 服务器没有给我们返回想要的数据 (反爬了)
    lis = driver.find_elements_by_css_selector('#productlist li')
    for li in lis:
        title = li.find_element_by_css_selector('.rowtitle a ').text  # 标题
        sell = li.find_element_by_css_selector('.viewpay').text.replace('已售', '')  # 销量
        price = li.find_element_by_css_selector('.brprice span').text.replace('¥', '')  # 价格
        shop_num = li.find_element_by_css_selector('.sizep').text.replace('货号:', '')  # 货号
        shop_name = li.find_element_by_css_selector('.shop a').text  # 店铺名字
        shop_year = li.find_element_by_css_selector('.age').text  # 店铺年份
        address = li.find_element_by_css_selector('.radd').get_attribute('title')  # 地址
        href = li.find_element_by_css_selector('.rowtitle a').get_attribute('href')  # 详情页
        # 保存数据
        dit = {
            '标题': title,
            '销量': sell,
            '价格': price,
            '货号': shop_num,
            '店铺名字': shop_name,
            '店铺年份': shop_year,
            '地址': address,
            '详情页': href,
        }
        csv_writer.writerow(dit)
        print(title, sell, price, shop_num, shop_name, shop_year, address, href)
    driver.find_element_by_css_selector('.next').click()


for page in range(1, 11):
    print(f'==============================正在爬取第{page}页数据内容==============================')
    time.sleep(1)
    get_shop_info()


driver.quit()

效果实现

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-02-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 松鼠爱吃饼干 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 开发环境
  • 模块使用
  • 爬虫代码
  • 效果实现
相关产品与服务
云服务器
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档