想爬取什么数据你们可以在文章下面评论一下,我好锻炼一下自己的爬虫能力,当然源码会给你们放出来。我们今天就使用自动化爬取数据,自动化的话就是人可以怎么操作,机器就可以怎么操作。用到的工具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()