• 爬取某东商品数据


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

    """
        采集某东数据
    """
    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)
  • 相关阅读:
    HTML5兼容性问题
    网站——如何实现轮播效果
    总结(1)
    MAC_terminal_终端设置
    JS_tips(updating):执行时间;
    Object:window_方法
    Object:Array数组——对象的集合
    Object:Math——对数据的数学计算
    js 统计字符串或者数组的出现次数
    react-native项目实战积累
  • 原文地址:https://www.cnblogs.com/mafu/p/15505561.html
Copyright © 2020-2023  润新知