美文网首页
爬取某宝商品(1)

爬取某宝商品(1)

作者: 践行数据分析 | 来源:发表于2020-05-28 17:00 被阅读0次

    今天我们利用上次的工具selenium 的webdrive工具简单爬取某宝上商品信息

    目的:爬取华为手机的  名称、价格、月销量、评论数

    第一步:

    利用代码驱动浏览器打开登陆网页

    这里说明下:不用url=https://www.taobao.com/   一般的网址都有反爬的机制,用这个网址驱动浏览器报错或者获取不到链接,这里用了微博登陆的地址

    下面是代码块:

    #引用库

    from selenium import webdriver

    #指定要打开的网址

    #url = 'https://www.taobao.com/'

    url='https://weibo.com/login.php?spm=a2107.1.0.0.6cf811d9eVk1ed&entry=taobao&goto=https%3A%2F%2Flogin.taobao.com%2Faso%2Ftvs%3Fdomain%3Dweibo%26sid%3Ded1f8e67c161b086b4382b16468b2dba%26target%3D68747470733A2F2F7777772E74616F62616F2E636F6D2F&goto2=https%3A%2F%2Fwww.taobao.com%2F'

    #调用谷歌驱动

    driver = webdriver.Chrome(r"C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe"  )

    #打开网页

    driver.get(url)

    第二步:

    打开网页后,搜索要爬取的商品,华为手机,选择天猫,这里只要天猫下的商品

    搜索完以后,我们发现有很多页商品,先看第一页,显示是每个商品的简图,在简图上点击商品名称,会进入详情页面,在详情页面里面有我们想要爬取的内容:名称 价格 月销量 评论数。

    所有我们爬取的路线就是 在第一页点击商品名称 -----到第二页上爬取内容

    首先要获取商品的所有链接:

    find_elements_by_xpath() //div[@ ] 查找div目录下包含@后面所写元素的所有节点,爬取到存储到pros里面, 这个链接是什么?就是商品名称所在代码,在谷歌浏览器,F12 查看这个代码是:class=''row row-2 title" 

    点开详情页面后,分别获取具体的信息

    这里说明下:获取评论数的时候,发现跟踪的代码获取不到或不正确,就带上找他的上一级代码

    这样就爬取了第一个商品

    批量爬取就建立for 循环

    for  i  in pros:

    第三步:

    存储数据

    titles = []

    prices = []

    mcounts = []

    ccounts = []

    titles.append(title)

     prices.append(price)

     mcounts.append(mcount)

     ccounts.append(ccount)

    #把存储的数据放入数据表中

    #引入pandas库

    import pandas  as pd

    data = pd.DataFrame()

    data['名称']=titles

    data['价格']=prices

    data['月销量']=mcounts

    data['评论数']=ccounts

    data

    完整代码:

    #素质四连

    #引用库

    from selenium import webdriver

    #指定要打开的网址

    #url = 'https://www.taobao.com/'

    url='https://weibo.com/login.php?spm=a2107.1.0.0.6cf811d9eVk1ed&entry=taobao&goto=https%3A%2F%2Flogin.taobao.com%2Faso%2Ftvs%3Fdomain%3Dweibo%26sid%3Ded1f8e67c161b086b4382b16468b2dba%26target%3D68747470733A2F2F7777772E74616F62616F2E636F6D2F&goto2=https%3A%2F%2Fwww.taobao.com%2F'

    #调用谷歌驱动

    driver = webdriver.Chrome(r"C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe"  )

    #打开网页

    driver.get(url)

    #优化代码

    #存储数据

    titles = []

    prices = []

    mcounts = []

    ccounts = []

    #建立一个for循环 从1到4

    for i in pros:

        #每个链接点击打开详情页面

        i.click()

        #打开后切换页面到第二页

        driver.switch_to_window(driver.window_handles[1])

        #切换页面后开始获取商品了

        #取商品名称,使用单数的element是查找第一个

        title = driver.find_element_by_xpath('//h1[@data-spm="1000983"]').text

        print(title)

        #获取价格

        price = driver.find_element_by_xpath('//span[@class="tm-price"]').text

        print(price)

        #获取月销量

        mcount = driver.find_element_by_xpath('//span[@class="tm-count"]').text

        print(mcount)

        #评论数

        ccount = driver.find_element_by_xpath('//li[@class="tm-ind-item tm-ind-reviewCount canClick tm-line3"]//span[@class="tm-count"]').text

        print(ccount)

        #一个商品爬取完后打印分割线看着明显

        print('============================================')

        #存储

        titles.append(title)

        prices.append(price)

        mcounts.append(mcount)

        ccounts.append(ccount)

        #一个爬取完关闭这个详情页面

        driver.close()

        #切换页面到第一页

        driver.switch_to_window(driver.window_handles[0])

    #把存储的数据放入数据表中

    #引入pandas库

    import pandas  as pd

    data = pd.DataFrame()

    data['名称']=titles

    data['价格']=prices

    data['月销量']=mcounts

    data['评论数']=ccounts

    data

    #数据表保存excel表格

    data.to_excel('淘宝商品数据.xlsx')

    相关文章

      网友评论

          本文标题:爬取某宝商品(1)

          本文链接:https://www.haomeiwen.com/subject/qfdaahtx.html