total_demo.py
from wang_yi_kao_la import WYKL
from class_taobao import TaoBao
from su_ning_yi_gou import SNYG
while 1:
print('1.网易考拉')
print('2.苏宁易购')
print('3.淘宝')
print('0.退出')
num=int(input('请输入您的选择:'))
while num not in range(0,4):
num=int(input('输入有误,请重输:'))
if num==1:
keywords = input('请输入您要查询的商品:')
wykl = WYKL(keywords)
wykl.execute()
elif num==2:
keyword = input('请输入您要搜索的关键词:')
snyg = SNYG(keyword)
snyg.start()
elif num==3:
keyword = input('请输入查询关键词:')
tb = TaoBao(keyword)
tb.start_taobao()
else:
break
网易考拉:wang_yi_kao_la.py
from selenium import webdriver
import time
class WYKL(object):
def __init__(self,keywords):
self.keywords=keywords
def execute(self):
driver=webdriver.Firefox()
driver.get('http://www.kaola.com')
search_input=driver.find_element_by_id('topSearchInput')
search_input.send_keys(self.keywords)
time.sleep(2)
search_btn=driver.find_element_by_id('topSearchBtn')
search_btn.click()
file_handle=open('%s.txt'%self.keywords,'w',encoding='utf-8')
for x in range(1,5):
time.sleep(1)
print('正在爬取第%s页数据,请稍后...' % x)
for x in range(1,11,2):
time.sleep(1)
j=x/10
js = 'document.documentElement.scrollTop = document.documentElement.scrollHeight *%f' % j
driver.execute_script(js)
marketprices = driver.find_elements_by_class_name('marketprice')
cur_price=driver.find_elements_by_class_name('cur')
titlewrap=driver.find_elements_by_class_name('titlewrap')
store=driver.find_elements_by_class_name('selfflag')
for x in range(0,len(marketprices)):
file_handle.write('%s\n'%titlewrap[x].text)
# print('%s'%titlewrap[x].text)
file_handle.write('原价:%s 现价:%s\n' % (marketprices[x].text,cur_price[x].text))
# print('原价:%s 现价:%s' % (marketprices[x].text,cur_price[x].text))
file_handle.write('店铺:%s\n'%store[x].text)
# print('店铺:%s'%store[x].text)
file_handle.write('*******************************')
# print('*******************************')
next_btn=driver.find_element_by_class_name('nextPage')
next_btn.click()
# 关闭浏览器
driver.quit()
file_handle.close()
# __name__ 值为 __main__ 表示是从当前文件直接运行的
# __name__ 值为 当前文件名称 表示别的文件引用执行的
# 如果是从当前文件直接运行的,执行以下的代码
if __name__ == '__main__':
keywords=input('请输入您要查询的商品:')
wykl=WYKL(keywords)
wykl.execute()
苏宁易购:su_ning_yi_gou.py
from selenium import webdriver
import time
class SNYG(object):
def __init__(self,keyword):
self.keyword=keyword
def start(self):
driver=webdriver.Firefox()
driver.get('http://www.suning.com')
search_input=driver.find_element_by_id('searchKeywords')
search_input.send_keys(self.keyword)
time.sleep(2)
search_btn=driver.find_element_by_id('searchSubmit')
# search_btn=driver.find_element_by_class_name('search-btn')
search_btn.click()
file_handle=open('%s.txt'%self.keyword,'w',encoding='utf-8')
for x in range(1,5):
print('正在爬取第%s页数据,请稍后...'%x)
for x in range(1,11,3):
time.sleep(1)
j=x/10
js = 'document.documentElement.scrollTop = document.documentElement.scrollHeight *%f' % j
driver.execute_script(js)
shops=driver.find_elements_by_class_name('res-info')
for shop in shops:
file_handle.write(shop.text)
next_btn=driver.find_element_by_id('nextPage')
next_btn.click()
#关闭浏览器
driver.quit()
file_handle.close()
# __name__ 值为 __main__ 表示是从当前文件直接运行的
# __name__ 值为 当前文件名称 表示别的文件引用执行的
# 如果是从当前文件直接运行的,执行以下的代码
if __name__ == '__main__':
keyword=input('请输入您要搜索的关键词:')
snyg=SNYG(keyword)
snyg.start()
淘宝:class_taobao.py
# 淘宝商品信息
# 引入selenium中的webdriver
from selenium import webdriver
import time
# 声明一个类
class TaoBao(object):
# 初始化时,传递要查询的关键词
def __init__(self, keyword):
self.keyword = keyword
def start_taobao(self):
# 1.创建fireFox浏览器对象
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()
# 输出
print(__name__)
# __name__ 值为 __main__ 表示是从当前文件直接运行的
# __name__ 值为 当前文件名称 表示别的文件引用执行的
# 如果是从当前文件直接运行的,执行以下的代码
if __name__ == '__main__':
keyword = input('请输入查询关键词:')
tb = TaoBao(keyword)
tb.start_taobao()