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)
  • 相关阅读:
    vector读入指定行数但不指定列数的数字
    p4语言编程环境安装
    近期学习资料一览表
    c++之洛谷P1068分数线划定
    打开文件的方法
    调用当前年月日
    想学习启发式优化算法,不知从何学起?
    使用这几款插件,能让你在GitHub看代码的效率翻倍
    微信公众号放Latex数学公式的完美解决方案
    手把手教你用Git备份保存论文和代码等重要数据到云端
  • 原文地址:https://www.cnblogs.com/mafu/p/15505561.html
Copyright © 2011-2022 走看看