python(引用selenium中的webdriver来爬取淘宝,天猫信息)

一、爬取淘宝信息

注意:只爬取了一页数据

代码如下:

#淘宝商品信息
#引入 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



你可能感兴趣的:(python(引用selenium中的webdriver来爬取淘宝,天猫信息))