mirror of
https://gitee.com/g1879/DrissionPage.git
synced 2024-12-10 04:00:23 +08:00
144 lines
4.4 KiB
Markdown
144 lines
4.4 KiB
Markdown
# 安装
|
||
|
||
```shell
|
||
pip install DrissionPage
|
||
```
|
||
|
||
升级:
|
||
|
||
```shell
|
||
pip install DrissionPage --upgrade
|
||
```
|
||
|
||
# 导入
|
||
|
||
```python
|
||
from DrissionPage import MixPage
|
||
```
|
||
|
||
# 初始化
|
||
|
||
s 模式是无须初始化的,导入后就可以直接使用。
|
||
d 模式因为使用浏览器,须要配置浏览器和对应的 driver。
|
||
|
||
## 自动配置方式
|
||
|
||
身为自动化工具,DrissionPage 拥有自动识别电脑安装的 Chrome 版本并自动下载对应 chromedriver 功能。这时只要直接创建页面对象即可正常使用。
|
||
第一次运行后,程序会记录 Chrome 和 driver 路径到配置文件,以后直接调用。
|
||
|
||
```python
|
||
page = MixPage()
|
||
page.get('https://www.baidu.com')
|
||
```
|
||
|
||
## 手动配置方式
|
||
|
||
!> **注意:** <br>这段代码只用于设置配置文件中的路径信息,**运行一次即可**,勿写到正式程序里 。
|
||
|
||
有些版本的 Chrome 程序无法获取正确的 driver,就须要手动配置路径。
|
||
新建一个**临时文件** ,修改并运行以下代码,可手动指定 Chrome 和 driver 路径,记录到配置文件,以后程序会自动读取其中的配置,无须再写。
|
||
|
||
如果想把配置信息写在代码里,请查阅“使用方法”里相关章节。
|
||
|
||
```python
|
||
from DrissionPage.easy_set import set_paths
|
||
|
||
# 请将以下路径修改为本机实际路径,chrome_path多数情况下可省略
|
||
set_paths(driver_path=r"D:\chrome\chromedriver.exe",
|
||
chrome_path=r"D:\chrome\chrome.exe")
|
||
```
|
||
|
||
当出现以下提示,说明设置成功:
|
||
|
||
```shell
|
||
正在检测可用性...
|
||
版本匹配,可正常使用。
|
||
```
|
||
|
||
各版本 driver 下载地址:
|
||
|
||
- 国外:https://chromedriver.chromium.org/downloads
|
||
- 国内:http://npm.taobao.org/mirrors/chromedriver
|
||
|
||
# 上手示例
|
||
|
||
现在,我们通过一些例子,来直观感受一下 DrissionPage 的工作方式。
|
||
|
||
## 爬取新冠排行榜
|
||
|
||
网址:https://www.outbreak.my/zh/world
|
||
此示例爬取全球新冠情况排行榜。该网站是纯 html 页面,特别适合 s 模式爬取和解析。
|
||
|
||

|
||
|
||
```python
|
||
from DrissionPage import MixPage
|
||
|
||
# 用 s 模式创建页面对象
|
||
page = MixPage('s')
|
||
# 访问数据网页
|
||
page.get('https://www.outbreak.my/zh/world')
|
||
|
||
# 获取表头元素
|
||
thead = page('tag:thead')
|
||
# 获取表头列,跳过其中的隐藏的列
|
||
title = thead.eles('tag:th@@-style:display: none;')
|
||
data = [th.text for th in title]
|
||
|
||
print(data) # 打印表头
|
||
|
||
# 获取内容表格元素
|
||
tbody = page('tag:tbody')
|
||
# 获取表格所有行
|
||
rows = tbody.eles('tag:tr')
|
||
|
||
for row in rows:
|
||
# 获取当前行所有列
|
||
cols = row.eles('tag:td')
|
||
# 生成当前行数据列表(跳过其中没用的几列)
|
||
data = [td.text for k, td in enumerate(cols) if k not in (2, 4, 6)]
|
||
|
||
print(data) # 打印行数据
|
||
```
|
||
|
||
输出:
|
||
|
||
```shell
|
||
['总 (205)', '累积确诊', '死亡', '治愈', '现有确诊', '死亡率', '恢复率']
|
||
['美国', '55252823', '845745', '41467660', '12,939,418', '1.53%', '75.05%']
|
||
['印度', '34838804', '481080', '34266363', '91,361', '1.38%', '98.36%']
|
||
['巴西', '22277239', '619024', '21567845', '90,370', '2.78%', '96.82%']
|
||
['英国', '12748050', '148421', '10271706', '2,327,923', '1.16%', '80.57%']
|
||
['俄罗斯', '10499982', '308860', '9463919', '727,203', '2.94%', '90.13%']
|
||
['法国', '9740600', '123552', '8037752', '1,579,296', '1.27%', '82.52%']
|
||
......
|
||
```
|
||
|
||
## 登录 gitee 网站
|
||
|
||
网址:https://gitee.com/login
|
||
此示例演示使用控制浏览器的方式自动登录 gitee 网站。
|
||
|
||
```python
|
||
from DrissionPage import MixPage
|
||
|
||
# 用 d 模式创建页面对象(默认模式)
|
||
page = MixPage()
|
||
# 跳转到登录页面
|
||
page.get('https://gitee.com/login')
|
||
|
||
# 定位到账号文本框并输入账号
|
||
page.ele('#user_login').input('你的账号')
|
||
# 定位到密码文本框并输入密码
|
||
page.ele('#user_password').input('你的密码')
|
||
# 点击登录按钮
|
||
page.ele('@value=登 录').click()
|
||
```
|
||
|
||
# 说明
|
||
|
||
无论电脑安装的 Chrome 能否正常使用,我们都建议使用绿色版 Chrome。因为 driver 的更新速度往往跟不上浏览器的更新速度,一旦浏览器自动升级而 driver
|
||
未出新版,就会出现无法启动的情况。所以建议用关闭升级功能的绿色版浏览器,使程序运行更稳定。
|
||
|
||
如果计划程序打包成 exe 文件,就不能使用默认配置文件记录配置,具体方法请查看“使用方法->打包程序”章节。
|