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
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值