ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

淘宝销量获取

2021-10-09 10:30:10  阅读:203  来源: 互联网

标签:__ xpath obj name chrome selenium 销量 获取 淘宝


 想爬取什么数据你们可以在文章下面评论一下,我好锻炼一下自己的爬虫能力,当然源码会给你们放出来。我们今天就使用自动化爬取数据,自动化的话就是人可以怎么操作,机器就可以怎么操作。用到的工具chromedrive.exe,下载地址:

 

https://npm.taobao.org/mirrors/chromedriver。这个工具下载安装好后要把这个chromedriver.exe复制到跟你的解释器同一目录之下cmd 中 where python, chromedriver.exe 跟 python.exe(指定执行pycharm这个python解释器) 放在一起

不会我下一篇文章会写。我看了其他博主写得都不太详细。我们这里用的是谷歌浏览器。

用到的包是selenium.我们可以到cmd里面输入pip install selenium 回车就会自动下载这个包。

这里selenium的使用可以看这个博主的。Python Selenium库的使用_凯耐的博客-CSDN博客_python selenium

from selenium.webdriver import Chrome
#导包
if __name__ == '__main__':
    chrome_obj = Chrome()
    #因为是个类,所以要创建一个对象。
    chrome_obj.get('https://uland.taobao.com/sem/tbsearch?refpid=mm_26632258_3504122_32538762&keyword=%E5%A5%B3%E8%A3%85&clk1=ab1fdcf6365ee8bc6248263f22f49a33&upsId=ab1fdcf6365ee8bc6248263f22f49a33')  # 往浏览器的网页地址栏填入淘宝网址

这里我们运行一下发现他会自动打开我们的浏览器并打开我们的淘宝网。但是我们打开看见的是女装。如果我们要搜索男装我们有两种方法1:可以输入男装的URL 2:还可以使用selenium的点击输入。

from selenium.webdriver import Chrome
#导包
if __name__ == '__main__':
    chrome_obj = Chrome()
    #因为是个类,所以要创建一个对象。
    chrome_obj.get('https://uland.taobao.com/sem/tbsearch?refpid=mm_26632258_3504122_32538762&keyword=%E5%A5%B3%E8%A3%85&clk1=ab1fdcf6365ee8bc6248263f22f49a33&upsId=ab1fdcf6365ee8bc6248263f22f49a33')  # 往浏览器的网页地址栏填入淘宝网址
    #先定位到搜索框
    input_obj = chrome_obj.find_element_by_xpath('//*[@id="J_search_key"]').clear()
    # 输入搜索框数据
    input_obj = chrome_obj.find_element_by_xpath('//*[@id="J_search_key"]').send_keys('男装')
    #定位到点击搜索按钮
    click_obj = chrome_obj.find_element_by_xpath('//*[@id="J_searchForm"]/input')
    # 触发点击
    click_obj.click()
    
    #关闭浏览器
    chrome_obj.quit()

这样就完成了输入男装并搜索。

接下来就是数据解析。我一般都是使用xpath,正则不太熟悉。

 

 我们可以看到数据使用xpath解析出来了。那接下来就是搞代码了。

 

运行发现成功了,接下来的是对数据合并。

 

数据合并后就是这样了。源码附上:

from selenium.webdriver import Chrome
import time
from lxml import etree
import json
#导包
if __name__ == '__main__':
    chrome_obj = Chrome()
    #因为是个类,所以要创建一个对象。
    chrome_obj.get('https://uland.taobao.com/sem/tbsearch?refpid=mm_26632258_3504122_32538762&keyword=%E5%A5%B3%E8%A3%85&clk1=ab1fdcf6365ee8bc6248263f22f49a33&upsId=ab1fdcf6365ee8bc6248263f22f49a33')  # 往浏览器的网页地址栏填入淘宝网址
    #先定位到搜索框
    input_obj = chrome_obj.find_element_by_xpath('//*[@id="J_search_key"]').clear()
    # 输入搜索框数据
    input_obj = chrome_obj.find_element_by_xpath('//*[@id="J_search_key"]').send_keys('男装')
    #定位到点击搜索按钮
    click_obj = chrome_obj.find_element_by_xpath('//*[@id="J_searchForm"]/input')
    # 触发点击
    click_obj.click()

    # 页面等待,等待数据加载完毕
    time.sleep(2)

    # 获取源码数据
    html_data = chrome_obj.page_source

    # 数据的提取:
    html_obj = etree.HTML(html_data)

    # 商品名
    name_list = html_obj.xpath('//div/span[@class="title-text"]/text()')
    print(name_list)
    #商品销量
    sell_info = html_obj.xpath('//div/div[@class="sell-info"]/text()')
    print(sell_info)
    #商品价格//div/span[@class="coupon-price-afterCoupon"]/text()
    jiage = html_obj.xpath('//div/span[@class="coupon-price-afterCoupon"]/text()')
    print(jiage)
    with open('taibao01.json', 'w', encoding='utf-8') as f:
        for i in range(len(name_list)):
            dict_ = {}
            dict_[name_list[i]] = sell_info[i]
            json_data = json.dumps(dict_, ensure_ascii=False) + ',\n'
            f.write(json_data)
    #关闭浏览器
    chrome_obj.quit()


 

 

 

 

标签:__,xpath,obj,name,chrome,selenium,销量,获取,淘宝
来源: https://blog.csdn.net/weixin_58520733/article/details/120663892

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有