一、爬取淘宝信息
注意:只爬取了一页数据
代码如下:
> #淘宝商品信息
> #引入 selenium 中的webdriver
> #1.创建firefox浏览器对象 from selenium import webdriver import time class TB(object):
> def __init__(self,keyword):
> self.keyword = keyword
> def start_taobao(self):
> #创建浏览器对象
> driver =webdriver.Firefox()
> #打开淘宝网址
> driver.get('http://www.taobao.com')
> #通过id找到输入框
> search_input = driver.find_element_by_id('q')
> #输入要搜索的关键词
> search_input.send_keys(self.keyword)
> #利用class来找到搜索按钮
> search_btn = driver.find_element_by_class_name('btn-search')
> #点击搜索按钮
> search_btn.click()
> time.sleep(2)
> #打开文件
> file_handle = open('%s.txt'%self.keyword,'w',encoding='utf-8')
> for x in range(1,2):
> print('正在获取第%s页数据,请稍后。。。。'%x)
> #for 循环执行五次
> for x in range(1,11,2):
> time.sleep(1)
> #把x换算成小数
> j = x/10
> #拼接让浏览器滚动单位js代码
> js = 'document.documentElement.scrollTop = document.documentElement.scrollHeight * %f'%j
> driver.execute_script(js)
> #查找当前页所有的商品信息,返回一个列表
> #电脑 鼠标 键盘。。。class_name('info-cont')
> #羽绒服 class-name('J_ClickStat')
> shops = driver.find_elements_by_class_name('info-cont')
> if len(shops) ==0:
> shops = driver.find_elements_by_class_name('J_MouserOnverReq')
> #for循环输出每一个信息
> for shop in shops:
> #写入文件
> file_handle.write(shop.text)
> file_handle.write('\n')
> # 找到下一页,点击
> # nextpage = driver.find_element_by_link_text('下一页')
> # nextpage.click()
> next_li = driver.find_element_by_class_name('next')
> next_li.click()
> #关闭文件
> file_handle.close()
> #退出浏览器
> driver.quit()
> #输出 print(__name__)
> #__name__ 值为__main__ 表示是从当前文件直接运行
> #__name__ 值为 当前文件名称 表示别的文件引用执行的
> #如果是从当前文件直接运行的,执行以下代码 if __name__ == '__main__':
> keyword = input('请输入查询的关键词:')
> tb =TB(keyword)
> tb.start_taobao()
二、爬取天猫商品信息
代码如下:
from selenium import webdriver
import time
class TM(object):
def __init__(self):
# self.keyword = keyword
pass
def start_tm(self):
print('0.天猫主页(www)1.天猫超市(chaoshi)2.喵鲜生(miao)3.医药馆(yao)4.苏宁易购(suning)')
type = input('请输入您感兴趣的版块,输入对应括号里的拼音:')
keyword = input('请输入查询的关键词:')
driver = webdriver.Firefox()
driver.get('https://%s.tmall.com'%type)
search_input = driver.find_element_by_id('mq')
search_input.send_keys(keyword)
search_btn = driver.find_element_by_css_selector('button[type="submit"]')
search_btn.click()
time.sleep(4)
file_handle = open('%s.txt' % keyword, 'w', encoding='utf-8')
for x in range(1,5):
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)
foods = driver.find_elements_by_class_name('product')
for food in foods:
file_handle.write(food.text)
file_handle.write('\n\n')
if type =='chaoshi':
next_li = driver.find_element_by_class_name('page-next')
else:
next_li = driver.find_element_by_class_name('ui-page-next')
next_li.click()
file_handle.close()
# 退出浏览器
driver.quit()
print(__name__)
if __name__ == '__main__':
tm = TM()
tm.start_tm()
三、汇总(引用上述淘宝,天猫)
# 从class_taobao中引入TaoBao类
from taobao import TB
from tianmao import TM
while 1:
print('1.淘宝')
print('2.天猫')
print('0.退出')
num = int(input('输入选项:'))
if num == 1:
print('欢迎进入淘宝!')
keyword = input('请输入搜索关键词:')
tb = TB(keyword)
tb.start_taobao()
elif num == 2:
print('欢迎进入天猫!')
tm = TM()
tm.start_tm()
else:
break