一、网络爬虫介绍

网络爬虫(Web Crawler)是一种自动抓取互联网信息的程序,它能够高效地从海量网页中提取有价值的数据。作为数据采集的利器,爬虫技术在数据分析、搜索引擎、价格监控等领域有着广泛应用。本文将带你全面了解Python网络爬虫的开发。

robots.txt规则

robots.txt 是网站与网络爬虫沟通的标准协议文件,它规定了哪些内容可以被爬取,哪些应该被禁止。作为爬虫开发者,理解并遵守 robots.txt 规则是合法合规爬取的基础。

通过在网站后加上robots.txt就可以查看当前网站的robots规则

完全开放

User-agent: * Disallow:

完全禁止

User-agent: * Disallow: /

部分限制

User-agent: * Disallow: /admin/ Disallow: /private/ Allow: /public/ Crawl-delay: 2

针对特定爬虫

User-agent: Googlebot Disallow: /nogoogle/ User-agent: * Disallow: /noothers/

掌握robots.txt规则是每个爬虫开发者的必修课。通过合理遵守这些规则,我们既能获取所需数据,又能维护良好的网络生态。记住,负责任的爬虫开发是技术可持续发展的基础。

二、requests库 

requests 是 Python 中最流行的 HTTP 客户端库,以其简洁优雅的 API 设计著称。本文将全面介绍 requests 库的使用方法和最佳实践。

1、安装requests库

在开始之前,确保你已经安装了requests库。如果尚未安装,可以通过pip轻松安装:

pip install requests -i https://pypi.tuna.tsinghua.edu.cn/simple

2、网页的源代码

如果通常我们想获取网页的内容我们是查看页面里的内容,但是我们使用代码去获取资源时就需要用到网页的源代码。

我们通过右击网页空白处点击查看源代码选项

但是通过这种方法无法获得全部信息,通过JavaScript脚本语言可以查看更多信息。

点击检查选项可以查看到脚本代码

3、获取网页资源

  • get()函数

requests.get(url, params=None, **kwargs)

url请求的 URL(必需)
params查询参数字典或字节序列,会自动附加到 URL
**kwargs其他可选参数(headers, timeout, auth 等)

 

import requestsresponse = requests.get('https://api.github.com')
print(response.status_code)  # 打印状态码
print(response.text)         # 打印响应内容
params = {'key1': 'value1', 'key2': 'value2'}
response = requests.get('https://httpbin.org/get', params=params)
print(response.url)  # 查看实际请求的URL
response.status_codeHTTP 状态码
response.text响应内容(字符串形式)
response.content响应内容(字节形式)
response.json()将 JSON 响应解析为 Python 对象
response.headers响应头字典
response.cookies响应 cookies
response.elapsed请求耗时
response.raise_for_status()如果请求失败(状态码非200),抛出异常
  • post()函数

requests.post(url, data=None, json=None, **kwargs)

参数说明
url请求的目标 URL(必需)
data表单数据(字典、字节或文件对象)
jsonJSON 可序列化的 Python 对象
**kwargs其他可选参数(headers, files, auth 等)
import requestspayload = {'key1': 'value1', 'key2': 'value2'}
response = requests.post('https://httpbin.org/post', data=payload)print(response.status_code)
print(response.json())  # 查看服务器返回的JSON响应

 三、selenium库

Selenium 是一个能让你「用代码操作浏览器」的开源工具。
常见用途:

  • 自动化功能测试

  • 重复性任务脚本(抢票、签到、填表)

  • 抓取需要执行 JS 的页面数据


1、环境搭建

  1. 安装 Python(https://www.python.org 下载 3.7+)。

  2. 安装 Selenium 

    pip install selenium ​-i https://pypi.tuna.tsinghua.edu.cn/simple
  3. Chrome内核的浏览器

    Chrome 驱动镜像:CNPM Binaries Mirror
    • 把解压后的 chromedriver.exe 放到
      – 任意目录,并记录路径;或
      – 直接丢进 Python 安装目录的 Scripts 文件夹(已在系统 Path 中)。

             2.验证:命令行输入 chromedriver 不报错就 OK。

      4. Edge内核的浏览器

  • 访问官方镜像:Microsoft Edge WebDriver | Microsoft Edge Developer

  • 驱动版本必须与 Edge 浏览器版本一致

  • 下载后解压,得到 msedgedriver.exe(建议重命名为 edgedriver.exe 方便记忆)。

在浏览器的关于浏览器选项就可以看到浏览器的内核版本、

 2、驱动浏览器

在selenium库中通过以下代码可以查看支持的浏览器类型

webdriver.浏览器类型名()

 通过以上方法我们也可以加载浏览器的驱动使用形式如下如下

webdriver.浏览器类型名(executable_path,options,service,keep_alive

executable_path指定驱动路径webdriver.Chrome(executable_path='chromedriver.exe')
options浏览器选项对象webdriver.Chrome(options=chrome_options)
service驱动服务配置webdriver.Chrome(service=service)
keep_alive保持连接webdriver.Chrome(keep_alive=True)

服务配置参数

from selenium import webdriver# 基本初始化
driver = webdriver.Chrome()# 带选项初始化
from selenium.webdriver.chrome.options import Optionschrome_options = Options()
chrome_options.add_argument('--headless')  # 无头模式
chrome_options.add_argument('--disable-gpu')  # 禁用GPU加速
chrome_options.add_argument('--window-size=1920x1080')  # 设置窗口大小driver = webdriver.Chrome(options=chrome_options)

 通过以下方法就可以的读取浏览器内容

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time# 方案 A:驱动已加入 PATH
driver = webdriver.Edge()# 方案 B:手动指定驱动路径(取消下一行注释)
# driver = webdriver.Edge(executable_path=r"C:\path\to\edgedriver.exe")driver.get("https://www.baidu.com")
driver.find_element(By.ID, "kw").send_keys("Edge Selenium", Keys.RETURN)
time.sleep(3)
driver.save_screenshot("baidu_result.png")
driver.quit()

send_keys() 是 Selenium WebDriver 中用于向网页元素输入内容的核心方法,主要用于文本框、文本域等可输入元素的交互操作。

from selenium import webdriver
from selenium.webdriver.common.by import Bydriver = webdriver.Chrome()
driver.get("https://www.example.com/login")# 定位用户名输入框并输入文本
username = driver.find_element(By.ID, "username")
username.send_keys("testuser")# 定位密码输入框并输入文本
password = driver.find_element(By.NAME, "password")
password.send_keys("securepassword123")

 

from selenium.webdriver.common.keys import Keyssearch_box = driver.find_element(By.NAME, "q")
search_box.send_keys("selenium")  # 输入文本
search_box.send_keys(Keys.RETURN)  # 模拟回车键
Keys.RETURN回车键element.send_keys(Keys.RETURN)
Keys.TABTab键element.send_keys(Keys.TAB)
Keys.ESCAPEEsc键element.send_keys(Keys.ESCAPE)
Keys.BACK_SPACE退格键element.send_keys(Keys.BACK_SPACE)
Keys.CONTROLCtrl键element.send_keys(Keys.CONTROL + 'a')
Keys.SHIFTShift键element.send_keys(Keys.SHIFT + 'hello')
Keys.ARROW_UP上箭头element.send_keys(Keys.ARROW_UP)

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/917345.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/917345.shtml
英文地址,请注明出处:http://en.pswp.cn/news/917345.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何解决pip安装报错ModuleNotFoundError: No module named ‘plotnine’问题

【Python系列Bug修复PyCharm控制台pip install报错】如何解决pip安装报错ModuleNotFoundError: No module named ‘plotnine’问题 一、摘要 在使用 PyCharm 进行 Python 开发时,常常需要通过 pip install 安装第三方包。某天,你在终端或 PyCharm 控制…

语校网收录东京语言学校150所:数据结构建模与工程实现全解

语校网收录东京语言学校150所:数据结构建模与工程实现全解 一、为什么语言学校的信息抓取如此困难? 在日语教育领域,“语言学校”是一类极度碎片化的机构体系,尤其在东京地区,2025年时点上已合法设立的语言学校已超1…

【按下电源键后,电脑里发生了什么?——BIOS:启动世界的“第一把钥匙”】

当你按下电源键的瞬间,电脑从一片死寂中“苏醒”。但你是否想过:是什么让屏幕亮起、风扇转动、硬件逐一激活? 这背后,有一个隐藏在主板上的“小程序”在默默掌控全局——它就是 BIOS(Basic Input/Output System&#x…

局域网五子棋工具 多人对战无限制

软件介绍 今天推荐一款经典的PC端五子棋游戏——GoBang,绿色免安装版本,完全免费,即开即用,轻松享受对弈乐趣。 游戏模式 软件提供三种对战模式:人人对战、人机对抗以及局域网联机游戏,满足不同玩家的社…

分布式弹幕系统设计

需求:分布式弹幕广播分布式方案1:适用redis 发布订阅来进行不同ws服务器之间的通信优点:适用小系统方案2:对ws服务器进行一致性hash获取ws服务的接入点优点:大型系统缺点:视频连接不均匀挑战点:广播速度聚合广播和线程池来进行优化

梦幻花瓣雨

1. 花瓣设计四种花瓣类型:创建了四种不同形状和颜色的花瓣(粉红、淡紫、浅粉和蓝绿色)自然形态:使用CSS渐变和复杂边框半径模拟真实花瓣的不规则形状柔和阴影:为花瓣添加微妙的阴影增强立体感2. 动画效果物理模拟&…

React 闭包陷阱及解决方案与 React 16/17/18 版本区别

一、React 闭包陷阱详解1. 什么是闭包陷阱React 闭包陷阱是指在函数组件中使用 Hook(特别是 useEffect 和 useCallback)时,由于闭包特性导致访问到旧的 state 或 props 值,而非最新值的现象。2. 典型场景示例function Counter() {…

[BJDCTF2020]EasySearch

首先尝试了一下sql注入,但是没有找到不同回显。直接用sqlmap扫描一下,因为这边用的是POST请求,所以需要抓包将请求复制到txt文件中然后使用命令sqlmap -p bp.txt。也没有发现注入漏洞。 再进行目录扫描试试: [02:33:43] 403 - …

【Linux】基本指令的使用 and 面试常问

1、man 指令使用方法:man Linux指令。功能:相当于字典,查找指令的用法。常用选项:-k:根据关键字搜索联机帮助。num:只在第num章节查找。-a:将所有章节的都显示出来,比如man printf它…

零基础 “入坑” Java--- 十六、字符串String 异常

文章目录一、String1.字符串的不可变性2.字符串的修改3.StringBuilder和StringBuffer4.【字符串练习】4.1 字符串中的第一个唯一字符4.2 字符串最后一个单词的长度4.3 验证回文串二、异常1.初识异常2.异常的分类3.异常的处理4.异常处理流程总结5.自定义异常在上一章节中&#x…

梯度下降在大模型训练中的作用与实现

梯度下降(Gradient Descent)是深度学习中最核心的优化算法之一。大模型(如GPT、BERT)在训练时需要优化数十亿甚至上千亿的参数,而梯度下降及其变体(如SGD、Adam)正是实现这一优化的关键工具。它…

【JVS更新日志】开源框架、APS排产、企业计划、物联网、逻辑引擎7.30更新说明!

项目介绍 JVS是企业级数字化服务构建的基础脚手架,主要解决企业信息化项目交付难、实施效率低、开发成本高的问题,采用微服务配置化的方式,提供了低代码数据分析物联网的核心能力产品,并构建了协同办公、企业常用的管理工具等&…

Eclipse中导入新项目,右键项目没有Run on Server,Tomcat的add and remove找不到项目

原因分析没有勾选Dynamic Web Module、Java、JavaScriptDynamic Web Module版本问题解决方法Eclipse中右键项目选择Properties左侧点击project facets勾选Dynamic Web Module、Java、JavaScript,注意Dynamic Web Module版本问题,要和tomcat版本对应。- Dynamic Web …

IntelliJ IDEA 2025系列通用软件安装教程(Windows版)

前言 JetBrains系列开发工具(如IntelliJ IDEA、PyCharm、WebStorm等)是程序员们非常喜爱的集成开发环境。2025年最新版本带来了更多强大的功能和改进。本教程将详细介绍如何在Windows系统上安装JetBrains 2025系列软件。 最近挖到一个宝藏级人工智能学习…

乌鸫科技前端二面

1. 你能给我介绍一下你参与的重要项目,并重点介绍一下做的内容?通俗解释: 挑一个你觉得最拿得出手、技术含量最高的项目,说说这个项目是干什么的(比如一个电商网站、一个后台管理系统),你在里面具体负责了…

《c++面向对象入门与实战》笔记

前年的书,翻出来整理一下7章.指针指针 sizeof为4*指针 sizeof为 所指类型的sizeof注意free后置空,避免野指针11章.类

easyExcel生成多个sheet的动态表头的实现

在使用 EasyExcel 实现“多个 Sheet 且每个 Sheet 表头是动态的”需求时&#xff0c;思路如下&#xff1a;✅ 实现思路概述 EasyExcel 的 ExcelWriter 支持多个 Sheet 写入。每个 Sheet&#xff1a; 使用 WriteSheet 创建&#xff1b;可以绑定一个动态生成的表头 List<List&…

SQL 连接类型示例:内连接与外连接

SQL 连接类型示例&#xff1a;内连接与外连接 示例数据表 假设我们有两个表&#xff1a; employees 表:emp_idemp_namedept_id1张三1012李四1023王五1034赵六NULLdepartments 表:dept_iddept_name101销售部102技术部104财务部1. 内连接 (INNER JOIN) 内连接只返回两个表中匹配的…

Ubuntu安装gpu驱动,cuda

系统初始化 1、安装基础软件 apt-get update apt-get -y install openssh-server openssh-client apt-utils freeipmi ipmitool sshpass ethtool zip unzip nano less git netplan.io iputils-ping mtr ipvsadm smartmontools python3-pip socat conntrack libvirt-clients li…

ctfshow_源码压缩包泄露

根据题目信息直接dirsearch解压下来一个.txt文件&#xff0c;一个index.phpflag{flag_here}不对那么就去看index.php也没有东西&#xff0c;于是查看wp发现是访问/fl000g.txt这才是对的还有很多源码泄露需要去了解• git源码泄露• svn源码泄露• DS_Store 文件泄露• 网站备份…