import time from selenium import webdriver # 声明一个类 class TaoBao(object): # 初始化时,传递要查询的关键词 def __init__(self,keyword): self.keyword = keyword def start_taobao(self): driver = webdriver.Firefox() # 2.打开淘宝网址 driver.get('http://www.taobao.com') # 3.通过id找到输入框 search_input = driver.find_element_by_id('q') # 4.输入搜索的关键词 search_input.send_keys(self.keyword) # 5.通过class找到搜索按钮 search_btn = driver.find_element_by_class_name('btn-search') # 6.点击搜索按钮 search_btn.click() # 休眠2秒 time.sleep(2) # 1.打开文件 encoding=utf-8 指定打开文件的字符编码 file_handle = open('%s.txt' % self.keyword, 'w', encoding='utf-8') for x in range(1, 11): print('正在获取第%s页数据,请稍后......' % x) # for循环执行5次 for x in range(1, 11, 2): # 休眠1秒 time.sleep(1) # 把x转换小数 j = x / 10 # 拼接让浏览器滚动的js代码 # %f float 类型数据占位符 js = 'document.documentElement.scrollTop = document.documentElement.scrollHeight * %f' % j # 执行让浏览器滚动的js代码 driver.execute_script(js) # 查找当前页所有的商品信息,返回的是一个列表 # 电脑 鼠标 键盘 。。。。。 class_name填写 info-cont # 其他 class_name 填写 J_MouserOnverReq shops = driver.find_elements_by_class_name('J_MouserOnverReq') # 如果没有找到数据,换另外一种方式去找 if len(shops) == 0: shops = driver.find_elements_by_class_name('info-cont') # for循环遍历列表,取出每一个商品的信息 for shop in shops: # 2.写入文件商品信息 file_handle.write(shop.text) file_handle.write('\n\n') # 找到下一页,点击 # 找到li标签下一页 next_li = driver.find_element_by_class_name('next') next_li.click() # 3.关闭文件 # 退出浏览器 driver.quit() # 输出 # __name__ 值为 __main__ 表示是从当前文件直接运行的 # __name__ 值为 当前文件名 表示别的文件引用执行的 # 如果是从当前文件直接运行的,执行以下代码 if __name__ == '__main__': keyword = input('请输入关键词') tb = TaoBao(keyword) tb.start_taobao()
基于python的淘宝信息查询
最新推荐文章于 2024-04-09 22:48:14 发布