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