自动化爬虫drissionpage

#https://www.dangdang.com/
from DrissionPage._elements.chromium_element import ChromiumElement
from DrissionPage._functions.keys import Keys
from DrissionPage._pages.chromium_page import ChromiumPage

page=ChromiumPage()
page.get('https://www.dangdang.com/')

key_S=page.ele('#key_S')
key_S.input('python')
key_S.input(Keys.ENTER)

while True:
    lis=page.eles('x://ul[@id="component_59"]/li')
    print(len(lis))
    count=1
    for li in lis:
        title=li.ele('@name=itemlist-title').attr('title')
        price=li.ele('.search_now_price').text
        try:
             author=li.ele('@name=itemlist-author',timeout=1).attr('title')
        except:
            author=''
        date=li.ele('x:.//p[@class="search_book_author"]/span[2]').text.replace("/","")
        try:
            cbs = li.ele('@name=P_cbs',timeout=1).text
        except:
            cbs=''

        des=li.ele('.detail').text
        print(count,title,price,author,date,cbs,des)
        count+=1
    #如果可以成功获取a标签对象  得到的对象类型是ChromiumElement
    #如果不能成功获取a标签对象  得到对象类型是NoneElement
    next_a=page.ele('@title=下一页')
    if isinstance(next_a,ChromiumElement):
       next_a.click()
    else:
        break

安装模块

pip install drissionpage
# print(page.ele('#chat-textarea'))
# #标签名
# print(page.ele('tag:textarea'))
# print(page.ele('t:textarea'))
# #任意属性定位   @属性名=属性值
# print(page.ele('@name=wd'))    #name属性是wd的
#
# #xpath
print(page.ele('xpath://textarea[@id="chat-textarea"]'))

#如果可以成功获取a标签对象  得到的对象类型是ChromiumElement
#如果不能成功获取a标签对象  得到对象类型是NoneElement

在原页面打开商品分类链接

'''
pip install drissionpage
'''
import time

from DrissionPage._configs.chromium_options import ChromiumOptions
from DrissionPage._functions.keys import Keys
from DrissionPage._pages.chromium_page import ChromiumPage

#创建浏览器对象

#这两行代码是谷歌浏览器
page=ChromiumPage()
page.get('链接')

divs=page.eles('.category-box')
b_index=0
for div in divs:
    #大分类
    divslist = page.eles('.category-box')
    btitle=divslist[b_index].ele('.title').text
    lis=divslist[b_index].eles('x://ul[@class="category-list"]/li')
    index=0
    for li in lis:#只是为了控制循环执行多少次
        #切换页面之后 ,只要保证 您每次再循环中拿到新的li对象就可以了
        divslist = page.eles('.category-box')
        new_lis = divslist[b_index].eles('x://ul[@class="category-list"]/li')
        title=new_lis[index].ele('.name').text
        url=new_lis[index].ele('t:a').attr('href')
        print(btitle,title,url)
        new_lis[index].click()  #点击进入产品列表页
        time.sleep(1)
        goods_lis=page.eles('.goods-item')
        #如果进入详情页,是基于源窗口打开,实现方式为点击方式,操作数据还是使用源page对象
        #但是获取不到源页面数据了
        for goods_li in goods_lis:
            name=goods_li.ele('.title').text
            price=goods_li.ele('t:span').text
            print(name,price)
        #回退操作
        index+=1
        page.back()
    b_index+=1


在新页面打开

'''
pip install drissionpage
'''
from DrissionPage._configs.chromium_options import ChromiumOptions
from DrissionPage._functions.keys import Keys
from DrissionPage._pages.chromium_page import ChromiumPage

#创建浏览器对象

#这两行代码是谷歌浏览器
page=ChromiumPage()
page.get('链接')

divs=page.eles('.category-box')
b_index=0
for div in divs:
    #大分类
    btitle=div.ele('.title').text
    lis=div.eles('x://ul[@class="category-list"]/li')
    index=0
    for li in lis:#只是为了控制循环执行多少次
        #切换页面之后 ,只要保证 您每次再循环中拿到新的li对象就可以了
        title=li.ele('.name').text
        url=li.ele('t:a').attr('href')
        print(btitle,title,url)
        new_page=page.new_tab(url)
        goods_lis=new_page.eles('.goods-item',timeout=1)
        #如果进入详情页,是基于源窗口打开,实现方式为点击方式,操作数据还是使用源page对象
        #但是获取不到源页面数据了
        if goods_lis:
            for goods_li in goods_lis:
                name=goods_li.ele('.title').text
                price=goods_li.ele('t:span').text
                print(name,price)
        else:
            try:
                new_tag_name=new_page.ele('x://div[@class="product-con"]/h2',timeout=1).text
            except:
                new_tag_name='空'
            try:
                new_tag_price=new_page.ele('x://div[@class="price-info"]/span',timeout=1).text
            except:
                new_tag_price="空"
            print(new_tag_name,new_tag_price)
        new_page.close()




分页爬虫

from DrissionPage._elements.chromium_element import ChromiumElement
from DrissionPage._functions.keys import Keys
from DrissionPage._pages.chromium_page import ChromiumPage

page=ChromiumPage()
page.get('链接')

key_S=page.ele('#key_S')
key_S.input('python')
key_S.input(Keys.ENTER)

while True:
    lis=page.eles('x://ul[@id="component_59"]/li')
    print(len(lis))
    count=1
    for li in lis:
        title=li.ele('@name=itemlist-title').attr('title')
        price=li.ele('.search_now_price').text
        try:
             author=li.ele('@name=itemlist-author',timeout=1).attr('title')
        except:
            author=''
        date=li.ele('x:.//p[@class="search_book_author"]/span[2]').text.replace("/","")
        try:
            cbs = li.ele('@name=P_cbs',timeout=1).text
        except:
            cbs=''

        des=li.ele('.detail').text
        print(count,title,price,author,date,cbs,des)
        count+=1
    #如果可以成功获取a标签对象  得到的对象类型是ChromiumElement
    #如果不能成功获取a标签对象  得到对象类型是NoneElement
    next_a=page.ele('@title=下一页')
    if isinstance(next_a,ChromiumElement):
       next_a.click()
    else:
        break

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值