A项目之一:selenium爬取某宝数据

利用selenium库模拟获取淘宝商品信息的操作

导入必要的库
from selenium import webdriver
import time
import re
模拟进入淘宝页面

先要下载插件chromdriver,然后将插件复制在目录下

driver=webdriver.Chrome() # 这里选用chrome浏览器
driver.get('http:\\www.taobao.com')
搜索商品,获取商品目录的页码数
def search():
    driver.find_element_by_id('q').send_keys('口红') #往搜索框输入搜索商品名称
    driver.find_element_by_class_name('btn-search').click() #模拟点击搜索摁钮
    time.sleep(50) #让你的程序休息50秒,在这50秒内,你需要扫描淘宝二维码完成淘宝登录
    token=driver.find_element_by_xpath('//*[@id="mainsrp-pager"]/div/div/div/div[1]').text #找到商品目录的页数的相关文本
    token=int(re.compile('\d+').search(token).group(0))#获取商品目录的页数
    return token
模拟下拉
def drop_down():
    for x in range(1,11,2):
        time.sleep(0.5)
        j=x/10  # 滑到的位置
        js='document.documentElement.scrollTop = document.documentElement.scrollHeight * %f' % j
        driver.execute_script(js)
模拟获取每一页的商品信息
def get_product():
    divs = driver.find_elements_by_xpath(
        '//div[@class="items"]/div[@class="item J_MouserOnverReq  "]') 
# div class="items"下的div class="item J_MouserOnverReq"
# 返回一个列表,列表元素为div class="item J_MouserOnverReq"的明细
    for div in divs:
        data=[]
#以下是当前目录下div class 属性
        info = div.find_element_by_xpath('.//div[@class="row row-2 title"]').text
        data.append(info)

# 付款金额
        price = div.find_element_by_xpath(
                './/div[@class="price g_price g_price-highlight"]/strong').text+'元'
        data.append(price)

# 付款人数(销售数)
        number = div.find_element_by_xpath('.//div[@class="deal-cnt"]').text
        data.append(number)

        location = div.find_element_by_xpath('.//div[@class="location"]').text
        data.append(location)

        img= div.find_element_by_xpath('.//div[@class="pic"]/a/img').get_attribute('src')
        data.append(img)
        
        datas.append(data)
    return datas
# datas 是一个大列表,里面的每个小列表代表一个商品的数据信息
模拟翻页
def next_page():

    token=search()
    num=0
    while num !=token-1:

        driver.get('https://s.taobao.com/search?q=口红&s={}'.format(44*num))
        driver.implicitly_wait(20)    #20秒内(不一定是20秒)
        num+=1
        drop_down()
        alldata=get_product()
    return alldata
调用函数,开始爬取信息
if __name__=='__main__':
    datas=[]
    alldata=next_page()
    print(alldata)

本文爬取的是口红数据,下一步将清洗数据,请看下一篇!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值