#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
3241

被折叠的 条评论
为什么被折叠?



