zoukankan      html  css  js  c++  java
  • 爬取某东商品数据

    爬取某东商品数据,没有分页。

    """
        采集某东数据
    """
    import random
    import time
    import csv
    from selenium import webdriver
    
    
    # 传入关键词进行搜索
    def get_product(keyword):
        driver.find_element_by_css_selector('#key').send_keys(keyword) # 找到输入框并填写关键词
        time.sleep(random.randint(2, 10)) # 休眠,反爬的一种
        driver.find_element_by_css_selector('#search > div > div.form > button').click() # 找到搜索按钮并点击
        driver.maximize_window() #  最大化窗口
        driver.implicitly_wait(10) # 隐式等待,等待页面加载完,是智能等待的一种。
    
    
    # 操作滚动下拉条,以应对懒加载
    def drop_down():
        for i in range(1, 11, 2): # 取的是13579
            j = i / 9 # 每次循环取值
            js = 'document.documentElement.scrollTop = document.documentElement.scrollHeight * %f' % (j)
            # 运行js代码
            time.sleep(random.randint(2, 10)) # 尽量模拟人
            driver.execute_script(js) #
    
    # 开始解析数据
    def parse_data(keyword):
        lis = driver.find_elements_by_css_selector('.gl-item') # 获取商品列表
    
        f = open(f'某东数据 - {keyword}.csv', mode='a', encoding='utf-8-sig', newline='')
        csvWriter = csv.DictWriter(f, fieldnames=[
            '标题',
            '价格',
            '评论统计',
            '供应商',
        ])
        csvWriter.writeheader() # 写入表头
        # 循环读取列表
        for li in lis:
            name = li.find_element_by_css_selector('.gl-item a em').text # 产品标题
            price = li.find_element_by_css_selector('.p-price strong i').text # 价格
            reviewcount = li.find_element_by_css_selector('div.p-commit strong a').text # 评论统计
            vendor = li.find_element_by_css_selector('.J_im_icon a').get_attribute('title') # 供应商
    
            dit = {
                '标题':name,
                '价格':price,
                '评论统计':reviewcount,
                '供应商':vendor,
            }
            print(dit)
            csvWriter.writerow(dit)
    keyword = input('请输入关键词进行搜索:')
    
    
    url = 'https://www.某东.com'
    driver = webdriver.Chrome()
    driver.get(url) # 请求页面
    
    # 调用函数
    get_product(keyword)
    # 滚动下拉,以应对懒加载
    drop_down()
    # 开始解析数据
    parse_data(keyword)
  • 相关阅读:
    Docker 容器间的单向连接
    使用 mysql 的 Docker 镜像
    Dockerfile 自动制作 Docker 镜像(三)—— 镜像的分层与 Dockerfile 的优化
    Dockerfile 自动制作 Docker 镜像(一)—— 基本命令
    在 Docker 的 CentOS7 镜像 中安装 mysql
    手动制作Docker镜像
    Docker容器基本命令注意点
    Linux基础15-Linux库函数
    Linux基础14-makefile
    Linux基础13-GDB调试
  • 原文地址:https://www.cnblogs.com/mafu/p/15505561.html
Copyright © 2011-2022 走看看