DrissionPage自动化获取城市数据内容

一、获取页面内容

二、最终结果

上海市
约收录140个指标
查看98075次
人均GDP
153299元
公交车
17899辆
户籍人口
1469.3万人

三、代码

from DrissionPage._pages.chromium_page import  ChromiumPage
import time
page = ChromiumPage()
page.get('https://www.swguancha.com/home/city')
#用get打开相应的网页
# <input type="text" autocomplete="off" placeholder="输入城市数据,如:GDP、人口、面积等" class="el-input__inner">
input_name=page.ele('.el-input__inner')
#page.ele是为了找class用.
input_name.input("北京市")
#给输入框输入北京市用.input
# <div data-v-a03c5990="" class="search-btn"> 查一下 </div>
btn = page.ele('.search-btn').click()
#点击查一下,用click()
 #  <span class="el-checkbox__inner"></span># selcity = page.ele('.el-checkbox__input is-checked
### 关于 DrissionPage 自动化获取不完整数据的解决方案 当使用 DrissionPage 进行网页自动化时,如果遇到无法获取完整的数据的情况,可能的原因有多种。以下是针对该问题的一些常见原因分析以及对应的解决方案: #### 1. 数据加载延迟 某些动态网页的内容可能是异步加载的,在页面初始渲染完成后才逐步显示出来。这种情况下,DrissionPage 的抓取可能会因为执行过早而导致部分数据未被完全加载。 - **解决方法**: 使用显式的等待机制来确保目标元素已经完成加载后再进行提取操作。 ```python from drission import Drission drission = Drission() page = drision.page() # 打开目标网页 page.get('https://example.com') # 显式等待特定条件满足 (例如某个元素可见) wait_result = page.ele_wait(('css selector', '#target-element'), timeout=10) if wait_result: data = page.ele('#target-element').text else: raise Exception("Element not found or loaded within the given time.") ``` 上述代码片段展示了如何利用 `ele_wait` 方法设置超时时间并等待指定的选择器匹配到相应元素[^1]。 #### 2. JavaScript 渲染问题 一些复杂网站依赖大量JavaScript脚本来构建其界面和填充内容。如果这些脚本未能正确运行,则可能导致缺失预期的数据。 - **解决方法**: 启用Chromium内核支持以更好地处理JS渲染需求;或者尝试调整无头模式(headless mode)参数配置以便更接近真实用户的浏览行为。 对于基于 Chromium 驱动版本较高的场景下,默认启用 headful 模式而非headless可以改善兼容性和稳定性[^2]: ```python options = { 'browser_type': 'chrome', 'mode': 'normal' # 设置为 normal 而不是默认的 headless } drission = Drission(options=options) ``` #### 3. 用户会话丢失或权限不足 在涉及身份验证的应用程序中,如果没有妥善管理cookies或者其他形式的身份令牌,那么即使成功访问到了URL地址也可能得不到期望的结果集。 - **解决办法**: 利用已有的用户资料文件夹路径启动新的实例从而保留原有的认证信息。 下面的例子说明了怎样通过指定UserDataDir选项让每次调用都继承之前建立起来的状态: ```python profile_dir = r'C:\Users\YourName\AppData\Local\Qwen\User Data' options = {'browser_args': ['--user-data-dir={}'.format(profile_dir)]} drission = Drission(browser_name='chrome', options=options) ``` 此方式特别适用于那些需要长期维持登录状态的任务环境中. #### 结论 综上所述, 处理由DrissionPage引发的数据采集不全现象可以从以下几个方面入手考虑: 增加足够的延时保障资源充分展现; 确认所使用的驱动框架能良好适配待测站点的技术特性; 并且合理运用持久化的session策略减少重复性的登陆动作带来的干扰因素. ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

青龙摄影

你的鼓励是我创作的动力,支持下

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值