当前位置: 首页 > news >正文

python爬虫:DrissionPage实战教程

声明:

本文章中所有内容仅供学习交流使用,不用于其他任何目的,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!

如果本文章看不懂可以看看上一篇文章,加强自己的基础:爬虫自动化工具:DrissionPage-CSDN博客

 案例解析:

前提:我们以ChromiumPage为主,写代码工具使用Pycharm(python环境3.9-3.10)

  • 我们要使用浏览器开发者工具(F12)进行对标签的查找,找到之后最好在终端进行搜索,确保标签只有一个在进行代码的编写

1. 百度案例(https://www.baidu.com/ )

(1) 案例一:
from DissionPage import ChromiumPage,ChromiumOptions# 先创建一个实例化对象
co = ChromiumOptions()
co.headless(False)
# 1、设置无头模式:co.headless(True)
# 2、设置无痕模式:co.incognito(True)
# 3、设置访客模式:co.set_argument('--guest')
# 4、设置请求头user-agent:co.set_user_agent()
# 5、设置指定端口号:co.set_local_port(7890)
# 6、设置代理:co.set_proxy('http://localhost:2222')page = ChromiumPage(co)
url = "https://www.baidu.com"
page.get(url)
page.wait.load_start() # 等待页面加载完成# 点击百度搜索框输入美女,并点击搜索
page.ele("css:#kw").input("美女")
page.ele("css:#su").click()print(page.html)
(2)案例二:
from DrissionPage import ChromiumPage# 先实例化一个对象
cp = ChromiumPage()
cp.get('https://www.baidu.com/')cp.ele("#kw").input("IP地址") # 定位到搜索框并填充数据
cp.wait.load_start() # 等待页面加载完成(像人的操作)
cp.ele("#su").click()  # 找到搜索按钮并点击搜索# 我们可以对其网址进行监听
cp.listen.start('qifu-api.baidubce.com/ip/local/geo/v1/district')res = cp.listen.wait()  # 等待并获取一个数据包
print(res.url)  # 输出数据包url
print(res.response.headers)  # 输出响应头
print(res.response.statusText)  # 输出响应状态码
print(res.response.body)  # 输出响应内容

2. 招聘平台的爬取

注意:学习为主,不要大量爬取数据,妨碍网站的运行,造成法律问题,需本人自己承担

import timefrom DrissionPage import ChromiumPage, ChromiumOptions
import pandas as pd# 先实例化一个对象
co = ChromiumOptions().auto_port()
page = ChromiumPage(co)# 首先我们进行监听动作
page.listen.start('/wapi/zpgeek/search/joblist.json')
page.get('https://www.zhipin.com/beijing/?seoRefer=index')# 输入我们要查找的岗位
page.ele('.ipt-search').input('网络安全\n')
res = page.listen.wait()try:time.sleep(1)cha = page.ele('.icon-close')print("cha:::", cha)cha.click()
except Exception as e:joblist = res.response.body['zpData']['jobList']for i in range(5):btn = page.ele('.ui-icon-arrow-right')_a = btn.parent().attr('class')time.sleep(2)if _a == '':page.scroll.to_bottom()page.wait(2)btn.click()res = page.listen.wait()joblist += res.response.body['zpData']['jobList']print(joblist)else:print('已获取全部职位信息')breakdf = pd.DataFrame(joblist)df.to_excel('boss.xlsx', index=False)page.quit()


http://www.mrgr.cn/news/97828.html

相关文章:

  • 柑橘病虫害图像分类数据集OrangeFruitDataset-8600
  • STM32——I2C通讯(软件模拟)
  • 探秘 Svelte+Vite+TS+Melt - UI 框架搭建,开启高效开发
  • PostgreSQL-数据库的索引 pg_operator_oid_index 损坏
  • SpringBoot 整合 MCP
  • JS 箭头函数
  • 【设计模式】面向对象开发学习OOPC
  • Apache Nifi安装与尝试
  • 研究嵌入式软件架构时遇到的初始化堆栈溢出问题
  • 3 版本控制:GitLab、Jenkins 工作流及分支开发模式实践
  • LeetCode Hot100 刷题笔记(2)—— 子串、普通数组、矩阵
  • 【回眸】Linux 内核 (十六) 之 多线程编程 下
  • 中间件-消息队列
  • C# 设置Excel中文本的对齐方式、换行、和旋转
  • 【HTML】纯前端网页小游戏-戳破彩泡
  • IDEA :物联网ThingsBoard-gateway配置,运行Python版本,连接thingsboard,接入 MQTT 设备
  • 以普通用户身份启动pure-ftpd服务端
  • js chrome 插件,下载微博视频
  • 蓝桥杯备赛学习笔记:高频考点与真题预测(C++/Java/python版)
  • 开源的7B参数OCR视觉大模型:RolmOCR