1. 基本概述

DrissionPage 是一个基于 python 的网页自动化工具。它既能控制浏览器,也能像requests一样收发数据包,更重要的是还能把两者合二为一。因此,简单来说DrissionPage可兼顾浏览器自动化的便利性和 requests 的高效率。

DrissionPage功能强大,内置无数人性化设计和便捷功能。并且它的语法简洁而优雅,代码量少,对新手友好。

2.环境安装

pip install DrissionPage

3.入门操作

首次使用需要简单创建一个临时的.py文件,需要运行下方初始化环境下方提供两个方案可随机使用一个进行环境初始化

需要右键浏览器->属性->打开文件所在位置,复制路径在拼接浏览器名字下方是我的路径(C:\Program Files\Google\Chrome\Application\chrome.exe)注意细节有的浏览器名字是大写的Chrome.exe

方案一:
from DrissionPage import ChromiumOptions
​
path = r'D:\Chrome\Chrome.exe'  # 请改为你电脑内Chrome可执行文件路径
ChromiumOptions().set_browser_path(path).save()

方案二:
在命令行输入以下命令(路径改成自己电脑里的)
dp -p D:\Chrome\chrome.exe

4.简单使用

案例使用老爬虫都推荐的豆瓣评分top

SessionPage 对应的是传统的reques 访问方式,无需配置session与cookie以及user-agent等其他,内部会自动处理

ChromiomPage 则是使用seleium的方式操作

from DrissionPage import SessionPage

page = SessionPage()

movies = []

for i in range(0, 250, 25):  # 每页25部,10页共250部
    page.get(f'https://movie.douban.com/top250?start={i}')

    for item in page.eles('x://*[@id="content"]/div/div[1]/ol/li'):
        num = int(item.ele('x:.//em').text)
        title = item.ele('x:.//span[1]').text
        rating = float(item.ele('x:.//span[@class="rating_num"]').text)
        movies.append({
            '排名': num,
            '名称': title,
            '评分': rating
        })

for movie in movies:
    print(movie)




##---------------------------------------------------------------------------

from DrissionPage import ChromiumPage

page = ChromiumPage()
page.get('https://movie.douban.com/top250')

movies = []
for i in range(10):  # 10页数据
    for item in page.eles('x://*[@id="content"]/div/div[1]/ol/li'):
        num = int(item.ele('x:.//em').text)
        title = item.ele('x:.//span[1]').text
        rating = item.ele('x:.//span[@class="rating_num"]').text
        movies.append({
                        '排名': num,
                        '名称': title,
                        '评分': rating
                    })
    next_btn = page.ele('x://span[@class="next"]/a')
    if next_btn:
        next_btn.click()
        page.wait.doc_loaded(timeout=10)
    else:
        break

for movie in movies:
    print(movie)

具体使用信息可以查看下方链接查看更多使用方式

https://blog.csdn.net/weixin_64809364/article/details/147197874?spm=1001.2101.3001.6650.4&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EYuanLiJiHua%7ECtr-4-147197874-blog-143858615.235%5Ev43%5Econtrol&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EYuanLiJiHua%7ECtr-4-147197874-blog-143858615.235%5Ev43%5Econtrol&utm_relevant_index=8

https://detayun.blog.csdn.net/article/details/148280671?spm=1001.2101.3001.6650.4&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EYuanLiJiHua%7EPosition-4-148280671-blog-144189770.235%5Ev43%5Econtrol&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EYuanLiJiHua%7EPosition-4-148280671-blog-144189770.235%5Ev43%5Econtrol&utm_relevant_index=8