Python 爬虫入门教程:从零构建你的第一个网络爬虫

news/2024/11/28 2:40:54/

网络爬虫是一种自动化程序,用于从网站抓取数据。Python 凭借其丰富的库和简单的语法,是构建网络爬虫的理想语言。本文将带你从零开始学习 Python 爬虫的基本知识,并实现一个简单的爬虫项目。


1. 什么是网络爬虫

网络爬虫(Web Crawler)是一种通过网络协议(如 HTTP/HTTPS)获取网页内容,并提取其中有用信息的程序。常见的爬虫用途包括:

  • 收集商品价格和评价。
  • 抓取新闻或博客内容。
  • 统计数据分析。

爬虫工作原理

  1. 发送 HTTP 请求到目标网站。
  2. 获取服务器返回的 HTML 页面。
  3. 解析 HTML 内容,提取所需数据。
  4. 保存数据以供后续使用。

2. 爬虫的基本工具

在 Python 中,我们可以使用以下工具和库来构建爬虫

2.1 requests

requests 是一个强大的 HTTP 库,用于发送网络请求,获取网页内容。

安装:

pip install requests

示例:

python">import requests 
url = "https://example.com" 
response = requests.get(url) 
print(response.text) # 打印网页内容

2.2 BeautifulSoup

BeautifulSoup 是一个解析 HTML 和 XML 的库,用于从网页中提取数据。

安装:

pip install beautifulsoup4

示例:

python">from bs4 import BeautifulSouphtml = "<html><body><h1>Hello, World!</h1></body></html>"
soup = BeautifulSoup(html, "html.parser")
print(soup.h1.text)  # 输出 "Hello, World!"

2.3 pandas

pandas 是一个用于数据处理和分析的库,适合将爬取的数据保存到 CSV 或 Excel。

安装:

pip install pandas

示例:

python">import pandas as pddata = {"Title": ["Example"], "Link": ["https://example.com"]}
df = pd.DataFrame(data)
df.to_csv("output.csv", index=False)

3. 爬虫案例:抓取豆瓣电影排行榜

下面我们将构建一个爬虫,从豆瓣电影的网页抓取电影排行榜。

3.1 准备工作

目标网址: https://movie.douban.com/top250

我们将抓取以下信息:

  • 电影名称
  • 评分
  • 引言

3.2 代码实现

python">import requests
from bs4 import BeautifulSoup
import pandas as pd# 爬取一个页面的数据
def scrape_page(url):headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36"}response = requests.get(url, headers=headers)soup = BeautifulSoup(response.text, "html.parser")movies = []for item in soup.find_all("div", class_="item"):title = item.find("span", class_="title").textrating = item.find("span", class_="rating_num").textquote = item.find("span", class_="inq").text if item.find("span", class_="inq") else "N/A"movies.append({"Title": title, "Rating": rating, "Quote": quote})return movies# 主程序:爬取多页
def main():base_url = "https://movie.douban.com/top250?start={}"all_movies = []for i in range(0, 250, 25):  # 每页 25 部电影url = base_url.format(i)print(f"Scraping: {url}")movies = scrape_page(url)all_movies.extend(movies)# 保存为 CSV 文件df = pd.DataFrame(all_movies)df.to_csv("douban_top250.csv", index=False)print("Scraping complete! Data saved to douban_top250.csv")if __name__ == "__main__":main()

3.3 代码解析

  1. 设置请求头: 模拟浏览器访问,避免被反爬机制屏蔽。

  2. BeautifulSoup 提取内容: 使用 findfind_all 定位 HTML 标签,提取标题、评分和引言。

  3. 循环抓取多页: 构造分页 URL,逐页爬取。

  4. 保存为 CSV: 使用 pandas 将数据存储为 CSV 文件。


4. 运行与结果

运行程序后,将生成 douban_top250.csv 文件,内容如下:


5. 注意事项

5.1 遵守爬虫的礼仪

  1. 合理设置延迟: 在抓取页面时加入适当的延时,避免对服务器造成压力。

  2. 检查 robots.txt 访问目标网站的 https://example.com/robots.txt 查看允许抓取的内容。

  3. 请求头伪装: 使用 User-Agent 模拟浏览器访问。

5.2 反爬机制应对

如果遇到反爬机制,可以尝试:

  • 使用代理 IP。
  • 处理动态内容(如 JavaScript 加载的页面)。
  • 使用更高级的库如 seleniumPlaywright

6. 总结与扩展

通过本文,我们学习了使用 Python 构建基本爬虫的流程,并完成了一个抓取豆瓣电影 Top250 的项目。你可以将爬虫技术扩展到更复杂的应用场景,比如:

  • 动态加载数据的网站(如使用 seleniumrequests-html)。
  • 数据清洗与可视化(结合 pandasmatplotlib)。
  • 大规模爬取(结合分布式爬虫框架如 Scrapy)。

在实际应用中,记得遵守法律法规和网站的爬虫协议,合理使用网络爬虫技术!


http://www.ppmy.cn/news/1550498.html

相关文章

使用 Maven 构建一个简单的 Java 项目

Apache Maven 是一个强大的构建自动化工具&#xff0c;主要用于 Java 项目。它简化了构建和管理任何基于 Java 的项目的流程。 本指南将涵盖 Maven 的安装、设置一个简单的 Java 项目以及使用 Maven 运行该项目。 1. 安装 安装 Java 在安装 Maven 之前&#xff0c;需要确保…

优化 Spring Boot 性能

优化 Spring Boot 性能是一个综合性的工作&#xff0c;需要从多个方面入手&#xff0c;涵盖数据库连接、缓存使用、数据库操作、异步处理、配置精简、资源压缩、HTTP 缓存、线程池调整等多个环节。通过合理的优化策略和精细的配置&#xff0c;可以显著提升应用的响应速度和处理…

shell查看服务器的内存和CPU,实时使用情况

要查看服务器的内存和 CPU 实时使用情况&#xff0c;可以使用以下方法和命令&#xff1a; 1. 使用 top 运行 top 命令以显示实时的系统性能信息&#xff0c;包括 CPU 和内存使用情况。 top按 q 退出。输出内容包括&#xff1a; CPU 使用率&#xff1a;位于顶部&#xff0c;标…

2024小迪安全基础入门第三课

目录 1、Web应用-防护产品-WAF保护 #WebWAF WAF的原理 1. 数据流监控 2. 策略匹配 3. 行为分析 4. 签名库 5.人工智能与机器学习 WAF 对 渗透测试 的影响 1. 提高攻击力度 2.延长测试时间 3. 误报与干扰 #WebCDN CDN的原理 1. 基本架构 2. 工作机制 袭击事件 …

HTTPS的单向认证和双向认证是什么?有什么区别?

目录标题 单向认证流程双向认证流程区别 单向认证流程 HTTPS单向认证‌是指只有服务器向客户端证明其身份。在这种认证方式中&#xff0c;服务器会向客户端发送一个由可信证书颁发机构&#xff08;CA&#xff09;签发的SSL证书&#xff0c;客户端会验证这个证书以确保服务器的…

Day 27 贪心算法 part01

贪心算法其实就是没有什么规律可言,所以大家了解贪心算法 就了解它没有规律的本质就够了。 不用花心思去研究其规律, 没有思路就立刻看题解。 基本贪心的题目 有两个极端,要不就是特简单,要不就是死活想不出来。 学完贪心之后再去看动态规划,就会了解贪心和动规的区别。…

蜜雪冰城也入局智慧物流,包括智能控制系统集成、机器人研发销售,开始招兵买马了...

导语 大家好&#xff0c;我是社长&#xff0c;老K。专注分享智能制造和智能仓储物流等内容。 在餐饮数字化转型的浪潮中&#xff0c;蜜雪冰城又一次走在了行业前列。 这家以性价比著称的茶饮巨头&#xff0c;最近通过旗下子公司联合注资5000万元&#xff0c;成立了雪王爱智慧科…

SAP SD学习笔记14 - 返品处理(退货处理)的流程以及系统实操,比如 返品传票;请求Block标记;收到退货之后的处理,请求传票的登录

上一章讲了 出库确认&#xff08;发货&#xff09;之后的取消。 SAP SD学习笔记13 - 出库确认&#xff08;发货&#xff09;之后的取消 - VL09_sap 销售出库取消-CSDN博客 本章继续讲SD模块中返品&#xff08;退货&#xff09;的流程以及系统操作。 比如 - 返品传票&#xf…