from selenium import webdriver
import time
import re
# 输入关键字 收搜 获取总的页码数 用于后边翻页
def search_product():
# 元素定位 ——输入框 搜索 按钮
driver.find_element_by_xpath('//*[@id="q"]').send_keys(kw) # xapth定位输入框 填入关键字
driver.find_element_by_xpath('//*[@id="J_TSearchForm"]/div[1]/button').click() # 模拟点击
# 运行 --解决登录问题
time.sleep(10)
# 使用手机
# 解决数据采集时 元素未加载完 拖动进度条
# 需要翻页 重复使用 封装函数
# 获取页码总数
token = driver.find_element_by_xpath('//div[@class="total"]').text
token = int(re.compile('(\d+)').search(token).group(1))
return token
# 下拉滑动条
def drop_down():
'''
js = 'window.scrollBy(0,8000)'
driver.execute_script(js)
time.sleep(3)
'''
# js = 'window.scrollBy(0,8000)'
# driver.execute_script(js)
# time.sleep(3)
for x in range(1,11,2): # 13579
time.sleep(0.5)
j = x/10
js = 'document.documentElement.scrollTop= document.documentElement.scrollHeight * %f'% j
driver.execute_script(js)
# 获取(提取)数据
def get_product():
divs = driver.find_elements_by_xpath('//div[@class="items"]/div[@class="item J_MouserOnverReq "]')
for div in divs:
# 宝贝名字
name = div.find_element_by_xpath('.//div[@class="row row-2 title"]').text
# 订单量
deal = div.find_element_by_xpath('.//div[@class="deal-cnt"]').text
# 图片链接
img = div.find_element_by_xpath('//div[@class="pic-box-inner"]/div[@class="pic"]/a/img').get_attribute('src')
# 价格
pic = div.find_element_by_xpath('//div[@class="price g_price g_price-highlight"]').text
# 店铺名称
ip_name = div.find_element_by_xpath('//a[@class="shopname J_MouseEneterLeave J_ShopInfo"]').text
mess = {'名称':name,'价格':pic,'订单量':deal,'店铺名称':ip_name,'图片链接':img}
print(mess)
# 图片的保存,链接已经获取了
# 翻页
def next_page():
# 避免反爬机制过强 使用 url 来达到翻页效果
token = search_product() # 到达第1页
drop_down() # 下拉
get_product() # 获取商品
num = 1 # 进入第2页操作
while num != token:
driver.get('https://s.taobao.com/search?q={}&s={}'.format(kw,44*num))
# 智能等待 最后等待时间为 20 s,如果超时 抛出异常
driver.implicitly_wait(20)
num += 1
drop_down() # 下拉
get_product() # 获取商品
# 程序入口
if __name__ == '__main__':
kw = input("请输入需要查询的商品:")
driver = webdriver.Chrome() # 选择谷歌浏览器
driver.get('https://www.taobao.com/')
next_page() # 这个函数里 已经 调用了 关键字点击,下滑条,数据获取 这3个函数
# 所以只调用这个即可 达到目的
淘宝信息获取(不保存)
最新推荐文章于 2022-09-30 11:39:05 发布