网络爬虫(python)入门

发布于:2025-08-01 ⋅ 阅读:(15) ⋅ 点赞:(0)

一、网络爬虫介绍

网络爬虫(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 requests

response = 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_code HTTP 状态码
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 表单数据(字典、字节或文件对象)
json JSON 可序列化的 Python 对象
**kwargs 其他可选参数(headers, files, auth 等)
import requests

payload = {'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内核的浏览器

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

 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 Options

chrome_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 By

driver = 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 Keys

search_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.TAB Tab键 element.send_keys(Keys.TAB)
Keys.ESCAPE Esc键 element.send_keys(Keys.ESCAPE)
Keys.BACK_SPACE 退格键 element.send_keys(Keys.BACK_SPACE)
Keys.CONTROL Ctrl键 element.send_keys(Keys.CONTROL + 'a')
Keys.SHIFT Shift键 element.send_keys(Keys.SHIFT + 'hello')
Keys.ARROW_UP 上箭头 element.send_keys(Keys.ARROW_UP)

 


网站公告

今日签到

点亮在社区的每一天
去签到