目录
官方网址链接☀️ 基本概念 | DrissionPage官网
安装drissionpage
运行环境
操作系统:Windows、Linux 和 Mac
Python 版本:3.6 及以上
支持:Chromium 内核浏览器(如 Chrome 和 Edge)、electron 应用
安装
pip install DrissionPage
升级
pip install DrissionPage --upgrade
或者升级到指定版本
pip install DrissionPage==4.0.0b17
正常来说,第一个安装指令就足够了,后续两个指令看个人的使用场景。
案例入门
OK,直接来操作案例快速入门
使用的基本逻辑
操作浏览器的基本逻辑如下:
- 创建浏览器对象,用于启动或接管浏览器
- 获取一个 Tab 对象
- 使用 Tab 对象访问网址
- 使用 Tab 对象获取标签页内需要的元素对象
- 使用元素对象进行交互
在百度搜索 “Drissionpage”,并打印结果。
# 导入
from DrissionPage import Chromium
# 连接浏览器
browser = Chromium()
# 获取标签页对象
tab = browser.latest_tab
# 访问网页
tab.get('https://www.baidu.com')
# 获取文本框元素对象
ele = tab.ele('#kw')
# 向文本框元素对象输入文本
ele.input('DrissionPage')
# 点击按钮,上两行的代码可以缩写成这样
tab('#su').click()
# 获取所有<h3>元素
links = tab.eles('tag:h3')
# 遍历并打印结果
for link in links:
print(link.text)
注:通过id绑定标签属性使用#,如果是class即使用.
ele1 = tab.ele('.tabe')
这个按键即绑定class='tabe'标签。
OK当使用完成后,你应该对这些基本元素有一些了解了,现在我们来实践去操作如何采集京东的数据。
使用drissionpage采集京东数据
在编写程序的时候,我需要你们学会一个简单操作,如何获取标签对象的id,class属性。
获取标签属性操作
可以找到键盘的F12按键,直接打开浏览器的开发者工具。
也可以通过鼠标右键网页

然后点击检查,进入开发者工具。
edge浏览器大概是这样的

chrome浏览器的

其实开发者工具都是一样。
现在来获取标签元素。

点击这个带有鼠标指针的按钮,点击后会变为蓝色。

然后点击相应的页面元素
开发者工具会快速定位到该组件,获取相应的标签属性就行了

OK,你现在就能写代码了,依据🛰️ 概述 | DrissionPage官网所提供的参考案例,基本能实现的七七八八的了。
京东实例代码参考
import time
import span
from DrissionPage import Chromium,WebPage,SessionPage,ChromiumPage, ChromiumOptions
import re
user_input = input("请输入要搜索的内容:")
browser = Chromium()
data = '华为'
tab = browser.latest_tab
tab.get('https://www.jd.com/')
ele1 =tab.ele("#key")
ele1.input(user_input)
tab(".button").click()
tab("._quick-search-trigger_jbcwn_12").click()
groups = tab.ele('._values-inner__hidden_jbcwn_88')
ele2 = groups.eles('._value-item_19o6w_23')
for i in ele2:
if data in i.text:
# data = i.text
i.click()
break
time.sleep(1)
ele3 = tab.ele('._common-button_1wphn_1 _common-button--primary_1wphn_20 _common-button--small_1wphn_13')
ele3.click()
grand = tab.ele('._goodsContainer_f6icl_1 plugin_goodsContainer')
title = [span.attr('title') for span in grand.eles('._text_1x4i2_30')]
price = grand.eles('._container_1tn4o_1')
price = [re.search(r'\d+', p.text).group() for p in price]
sale_elements = grand.eles('._goods_volume_container_1xkku_1')
sales = []
for element in sale_elements:
sale_text_element = element.ele('._goods_volume_1xkku_1')
raw = sale_text_element.text
clean = re.sub(r'\d+%好评$', '', raw)
sales.append(clean)
data = [
{
'title': title[i],
'price': price[i],
'sale': sales[i]
} for i in range(len(title))
]
print(data)
browser.quit()
该代码只做一个参考使用,因为不同浏览器或者页面都是会做不定时的更新的,就会导致代码失效,或者查找不到元素的问题
521

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



