首页 > 其他分享 >爬虫学习教程

爬虫学习教程

时间:2024-11-22 18:42:54浏览次数:3  
标签:教程 java 爬虫 System 学习 导入 println import out

一、基本概念了解

        爬虫是一种自动化的程序,它能够访问互联网上的网页,并从中提取所需的数据。这些程序通常模拟浏览器的行为,向服务器发送请求,并接收服务器返回的响应内容。爬虫可以用于多种目的,包括数据收集、信息聚合、研究分析等。它们能够处理大量的网页,并且能够比人工更快、更准确地提取信息。

        API是一种软件中介,它允许不同的软件应用程序之间进行交互。在爬虫的上下文中,API通常指的是一个网站提供的一种服务,允许开发者以结构化的方式(如JSON或XML)请求数据,而不是通过传统的网页。使用API通常比直接爬取网页更高效、更可靠,因为API提供了一个明确定义的接口,而且网站管理员可以控制API的访问频率和数据量。

        请求:在网络通信中,请求是客户端(比如一个爬虫程序)向服务器发送的一条消息,请求服务器提供资源或执行某些操作。请求通常包含请求方法(如GET或POST)、请求的URL、协议版本和头部信息。

        响应:是服务器对客户端请求的答复。响应包含状态码(表示请求是否成功)、头部信息和响应体(通常是请求的数据)。客户端需要解析响应体来获取所需的数据。

二、环境准备

  • Python:一种广泛使用的编程语言,适合初学者。
  • 安装Python:访问Python官网下载并安装Python。
  • 安装IDE:推荐使用PyCharm或VSCode作为开发环境。

三、学习基本库

        Java.lang,这是Java的核心库,包含Java语言的基础类。

// String类用于处理字符串
String greeting = "Hello, World!"; // 创建一个字符串变量
System.out.println(greeting); // 打印字符串到控制台

// Math类提供数学运算方法
double root = Math.sqrt(16); // 计算16的平方根
System.out.println(root); // 打印结果,应该是4.0

// Thread类用于线程管理
class MyThread extends Thread { // 继承Thread类创建新线程
    @Override
    public void run() { // 覆写run方法
        System.out.println("Thread is running."); // 线程运行时打印信息
    }
}
// 在主函数中启动线程
public class Test {
    public static void main(String[] args) {
        MyThread t = new MyThread(); // 创建线程实例
        t.start(); // 启动线程
    }
}

// System类提供系统相关的操作
System.out.println("Hello, World!"); // 打印到标准输出(控制台)

// Object类是所有类的基类
class MyClass extends Object { // 继承Object类
    public void display() { // 定义一个方法
        System.out.println("Display message"); // 打印信息
    }
}

         Java.util包含各种实用工具类,如集合框架、日期时间处理、随机数生成等。

import java.util.ArrayList; // 导入ArrayList类
import java.util.HashMap; // 导入HashMap类

// ArrayList类用于动态数组
ArrayList<String> list = new ArrayList<>(); // 创建ArrayList实例
list.add("Apple"); // 添加元素
list.add("Banana"); // 添加元素

// HashMap类用于键值对集合
HashMap<String, Integer> map = new HashMap<>(); // 创建HashMap实例
map.put("Apple", 1); // 添加键值对
map.put("Banana", 2); // 添加键值对

// Date类和Calendar类用于日期时间处理
import java.util.Date; // 导入Date类
import java.util.Calendar; // 导入Calendar类

Date now = new Date(); // 创建Date对象,代表当前日期和时间
System.out.println("Current Date and Time: " + now); // 打印当前日期和时间

Calendar calendar = Calendar.getInstance(); // 获取Calendar实例
int year = calendar.get(Calendar.YEAR); // 获取当前年份
System.out.println("Year: " + year); // 打印年份

// Random类用于生成随机数
import java.util.Random; // 导入Random类

Random random = new Random(); // 创建Random实例
int number = random.nextInt(100); // 生成一个0到99之间的随机数
System.out.println("Random Number: " + number); // 打印随机数

        Java.io,包含输入输出流相关的类,用于文件读写、网络通信等。

import java.io.File; // 导入File类

// File类用于文件操作
File file = new File("example.txt"); // 创建File对象
if (file.exists()) { // 检查文件是否存在
    System.out.println("File exists."); // 文件存在
} else {
    System.out.println("File does not exist."); // 文件不存在
}

// BufferedReader和BufferedWriter类用于缓冲输入输出流
import java.io.BufferedReader; // 导入BufferedReader类
import java.io.BufferedWriter; // 导入BufferedWriter类
import java.io.FileReader; // 导入FileReader类
import java.io.FileWriter; // 导入FileWriter类

// 使用try-with-resources语句自动关闭资源
try (BufferedReader reader = new BufferedReader(new FileReader("input.txt")); // 创建BufferedReader实例
     BufferedWriter writer = new BufferedWriter(new FileWriter("output.txt"))) { // 创建BufferedWriter实例
    String line; // 用于存储读取的每一行
    while ((line = reader.readLine()) != null) { // 读取每一行直到文件末尾
        writer.write(line); // 写入到输出文件
        writer.newLine(); // 写入新行
    }
} catch (Exception e) { // 捕获并处理异常
    e.printStackTrace(); // 打印异常堆栈跟踪
}

        Java.sql,包含数据库访问相关的类,用于连接和操作数据库。

import java.sql.Connection; // 导入Connection类
import java.sql.DriverManager; // 导入DriverManager类
import java.sql.ResultSet; // 导入ResultSet类
import java.sql.Statement; // 导入Statement类

// 定义数据库连接参数
String url = "jdbc:mysql://localhost:3306/mydb"; // 数据库URL
String user = "username"; // 数据库用户名
String password = "password"; // 数据库密码

// 使用try-with-resources语句自动关闭资源
try (Connection conn = DriverManager.getConnection(url, user, password); // 获取数据库连接
     Statement stmt = conn.createStatement(); // 创建Statement对象
     ResultSet rs = stmt.executeQuery("SELECT * FROM mytable")) { // 执行查询
    // 遍历查询结果集
    while (rs.next()) {
        String columnValue = rs.getString("column_name"); // 获取指定列的值
        System.out.println(columnValue); // 打印列值
    }
} catch (Exception e) { // 捕获并处理异常
    e.printStackTrace(); // 打印异常堆栈跟踪
}

        这些示例代码和注释提供了对Java常用库的基本了解。

四、学习基本的HTTP请求

        使用requests库发送GET和POST请求。

import requests

# GET请求
response = requests.get('http://example.com')
print(response.text)

# POST请求
payload = {'key1': 'value1', 'key2': 'value2'}
response = requests.post('http://example.com', data=payload)
print(response.text)

五、解析网页内容

        使用BeautifulSoup解析HTML。

from bs4 import BeautifulSoup

html_doc = """
<html><head><title>The Dormouse's story</title></head>
<body>
<p class="title"><b>The Dormouse's story</b></p>
</body>
</html>
"""

soup = BeautifulSoup(html_doc, 'html.parser')
print(soup.prettify())

标签:教程,java,爬虫,System,学习,导入,println,import,out
From: https://blog.csdn.net/2301_78933554/article/details/143978154

相关文章

  • 如何使用yolov8深度学习目标检测模型训练——芯片缺陷数据集/芯片表面缺陷数据集 1600
    如何使用YOLOv8模型训练芯片表面缺陷识别检测数据集。我们将从数据集的准备、模型的加载、训练配置和训练过程等方面进行详细说明。1.数据集准备数据集概述数据集名称:芯片表面缺陷识别检测数据集数据集来源:自制数据集内容:包含1600张图像,每张图像都有对应的标签......
  • 泷羽Sec学习笔记:shell(2)永久环境变量和字符串显位
    学习笔记:shell编程(2)永久环境变量和字符串显位_哔哩哔哩_bilibili永久变量:echo$PATH 查看环境变量echo$HOME  家目录root用户我们使用的ls、dir命令能输出内容就是因为这些命令都有相对应的变量。which--als  查看ls命令的脚本路径查看echo$PATH:/usr/l......
  • 硬件零基础到高薪就业学习路线(含学习视频书籍网站推荐及各就业方向需额外学习内容)
    一、基础学习电子技术基础学习内容:数字电路:基本的数字逻辑门(与、或、非、与非、异或等),学习组合逻辑电路(编码器、解码器等)和时序逻辑电路(触发器、寄存器、状态机等)模拟电路:学习基本的电路元件(如电阻、电容、电感等)及其在各种电路(如放大电路、滤波电路、振荡电路等)中的应......
  • 【数据集】【YOLO】【目标检测】无人机行人识别数据集 1394 张,YOLO航拍行人识别算法实
     一、数据集介绍【数据集】无人机行人识别数据集1394张,目标检测,包含YOLO/VOC格式标注。数据集中包含1种分类:names:['person'],表示"人"。数据集来自无人机采集数据;可用于无人机行人识别。检测场景为街道、商城、园区等有行人走动的区域,可用于公共安全监控、智能交通管......
  • 【AutoCAD Mechanical 2024机械版下载与安装教程】
    ‌‌‌AutoCADMechanical与基础版AutoCAD的主要区别在于其专业领域和功能扩展:应用领域和功能扩展AutoCADMechanical是专门为制造业设计的,主要用于加速机械设计流程。它包含了AutoCAD的所有基础功能,并增加了许多专门用于机械工程设计的工具,如自动生成机械构件、标注尺寸和创建......
  • Allegro学习笔记( 四)如何一次性添加GND过孔
    PCB周围添加地孔的好处:一是有效减少PCB边缘上电磁波的辐射和传播,减少PCB对外围设置的信号干扰,提高PCB的抗干扰能力;二是减小PCB板边的翘曲的变形。那么问题就来了,那么多过孔需要手动一个个添加,那得是多么繁琐的工作,还需要保持PCB的美观,那更是难上加难了。小编给大家介绍一种......
  • [学习笔记 #5] 哈希
    目录[学习笔记#5]哈希前言哈希表过渡:用哈希解决判定性问题不知道归到哪里去的技巧集合哈希SumHashingXorHashing序列哈希树哈希数据结构维护哈希值参考[学习笔记#5]哈希下面[]起来的是我还不确定的。前言从今年暑假到现在(2024.11.13),考了多少道哈希,我一道都没场切。前......
  • 机器学习:pytorch框架(2)--核心概念理解
    学习记录总结目录:机器学习:pytorch框架(1)环境安装1前言在安装基本的环境之后,下面就直接进入正式的pytorch学习中了:首先需要了解的是:PyTorch的基本概念(如Tensor和Variable)​、自动微分等PyTorch的核心模块。2pytorch的基本概念同样的,pytorch框架在开发过程中也构建......
  • Python 初学者的学习指南:从入门到实践 ---亲身经历版本!!!
    前言Python因其简单易学、功能强大而成为初学者编程的首选语言。无论你是零基础的小白,还是想拓展技能的开发者,Python都能为你提供无限可能。本篇博客将为Python初学者提供一套学习方法和学习路线,帮助你在短时间内掌握Python编程的核心知识,并学以致用。学习方法明......
  • 机器学习:pytorch框架(1)安装
    在整个框架的学习过程中,需要注重三个方面:①勤动手:深刻体会相应的知识;②成体系(构建相应的知识树);③多总结(理解吸收)1基本背景pyTorch是一个经过市场上无数从业者筛选的深度学习框架,提供了健全的神经网络接口,其动态网络结构及Python友好性,获得了大量深度学习从业人员的......