zoukankan      html  css  js  c++  java
  • selenium爬虫 :使用selenium爬取淘宝某口红店铺的用户对商品的评价

    本作品不可用于任何商业途径,仅供学习交流!!!

    分析:

    打开淘宝某个口红商品店铺的网页,打开抓包工具,刷新网页进行抓包

    使用浏览器打开淘宝某个口红商品店铺的网页,初始进入网页如图:

    下拉(滚动)如下:

    分析结论:

    代码部分:

    在 jupyter 编码如图:

    导入的包

    数据提取解析的代码:

    ok,下面是跑该项目的效果图:

    现在更新(把抓取到的数据保存在csv里面):

    import time
    from lxml import etree
    from pandas import DataFrame
    from selenium import webdriver
    from selenium.webdriver import Edge
    from selenium.webdriver.support.wait import WebDriverWait
    
    
    
    
    def get_request():
    
        bro = webdriver.Edge(executable_path='./msedgedriver.exe')
        url = 'https://detail.tmall.com/item.htm?spm=a230r.1.14.1.7aeeeefbO9TAW3&id=616898335759&ns=1&abbucket=17'
        bro.get(url=url)
    
        page_text_list = []
        time.sleep(2)
        try:
    
            bro.find_element_by_xpath('/html//div[9]/div[2]/div').click()
        except:
            pass
    
    
        bro.execute_script('window.scrollTo(0,800)')
        WebDriverWait(bro,5).until(lambda el:bro.find_element_by_xpath('//*[@id="J_TabBar"]/li[2]/a'))
        bro.find_element_by_xpath('//*[@id="J_TabBar"]/li[2]/a').click()
        time.sleep(1)
    
        page_text_list.append(bro.page_source)
    
        for i in range(3):
            WebDriverWait(bro,5).until(lambda el:bro.find_element_by_xpath('//*[@id="J_Reviews"]/div/div[7]/div/a[3]'))
            bro.find_element_by_xpath('//*[@id="J_Reviews"]/div/div[7]/div/a[3]').click()
            time.sleep(1)
            page_text_list.append(bro.page_source)
            
        bro.quit()
        return page_text_list
    
    def get_stat():
        
        col_meta_list = []
        content_list = []
        for page_text in get_request():
            tree = etree.HTML(page_text)
            tr_list = tree.xpath('//*[@id="J_Reviews"]/div/div[6]/table/tbody/tr')
    
            for tr in tr_list:
                col_meta = tr.xpath('./td[2]/div[1]/p/@title')[0][5:]
    
                try:
                    content = tr.xpath('./td[1]/div[2]/div[2]/div[1]/text()')[0]
                except:
                    content = tr.xpath('./td[1]/div[1]//text()')[0]
    
                col_meta_list.append(col_meta)
                content_list.append(content)
        dic = {
            
            '内容':content_list,
            '色号':col_meta_list,
        }
            
        return dic
    
    def ptable_to_csv():
    
        data = DataFrame(data=get_stat())
        data.to_csv('data_1.csv',encoding='utf-8-sig',index=False)
        print('{}抓取的数据已经保存!'.format(time.strftime("%Y-%m-%d %H:%M:%S")))
    
    def mian():
        ptable_to_csv()
        
    mian()
    
    

    本作品不可用于任何商业途径,仅供学习交流!!!

  • 相关阅读:
    中国石油大学天梯赛真题模拟第二场
    AtCoder Grand Contest 016 B
    POJ1011 Sticks
    UPC7817: Supermarket
    UPC5652: Ants on a Circle
    石大iCal课表使用指南
    UPC10582: Cowpatibility
    UPC11079: 小P的决斗 POJ3244 Difference between Triplets
    UPC6976:矩阵模板(二维哈希)
    知识点2-3:视图的职责
  • 原文地址:https://www.cnblogs.com/YYQ-4414/p/14496023.html
Copyright © 2011-2022 走看看