DrissionPage爬取京东
时间: 2025-01-02 20:29:13 浏览: 158
### 使用 DrissionPage 库爬取京东数据
#### 安装依赖库
为了使用 `DrissionPage` 进行数据抓取,首先需要确保已经安装了所需的Python包。可以通过pip工具来完成这一操作。
```bash
pip install DrissionPage -i https://pypi.tuna.tsinghua.edu.cn/simple/
```
此命令会从清华大学的PyPI镜像源下载并安装`DrissionPage`库,提高安装效率[^4]。
#### 初始化浏览器实例
创建一个新的Python脚本来初始化一个无头模式下的Chrome浏览器实例,这是执行后续网页交互的基础。
```python
from drission.page import ChromiumPage
# 创建Chromium页面对象,默认启用无头模式
with ChromiumPage(headless=True) as page:
pass # 后续逻辑将在此处编写
```
这段代码展示了如何利用上下文管理器(`with`)自动处理资源释放,并设置浏览器运行于后台而不弹出窗口[^2]。
#### 访问目标网址与加载商品列表
定义访问特定类目下商品集合链接的方法,模拟真实用户的浏览行为以绕过某些简单的反爬机制。
```python
def load_product_list(page, category_url):
try:
# 打开指定分类的商品列表页
page.get(category_url)
# 等待页面完全渲染完毕后再继续下一步动作
while not page.is_ready():
continue
print('成功打开商品列表')
except Exception as e:
print(f'发生错误:{str(e)}')
category_link = 'https://list.jd.com/list.html?cat=9987%2C653%2C655'
load_product_list(page, category_link)
```
这里实现了基本异常捕获功能,在遇到网络波动或其他不可预见情况时能够给出提示信息而不是直接崩溃程序[^1]。
#### 解析HTML结构提取所需字段
针对已加载成功的文档流,运用XPath表达式定位各个单品的信息节点,进而抽取标题、价格等重要属性值。
```python
import json
def parse_products_info(page):
products_data = []
items = page.eles('.gl-item') # 获取所有商品项元素
for item in items:
sku_id = item.attr('data-sku')
title_element = item.ele('.p-name em').text.strip()
price_element = item.ele('.p-price i').text.replace('¥', '').strip()
product_dict = {
"id": sku_id,
"title": title_element,
"price": float(price_element),
}
products_data.append(product_dict)
return products_data
parsed_items = parse_products_info(page)
print(json.dumps(parsed_items[:5], ensure_ascii=False))
```
上述片段中包含了对单个商品DOM树的选择以及文本内容清理的过程,最终形成易于理解且便于后期加工的标准JSON格式字符串输出前五个样本作为验证结果。
阅读全文
相关推荐


















