网站首页 > 博客文章 正文
Python 的 Web Scraping 技术是数据采集的强大工具,适用于从网页中提取特定信息。以下是一个实战流程和代码示例,以帮助你快速上手。
1. 准备工作
安装依赖库
bash
pip install requests beautifulsoup4 lxml
- requests:用于发送 HTTP 请求。
- BeautifulSoup:解析 HTML 和 XML,提取内容。
- lxml:支持快速解析 HTML。
2. 确定目标
选择一个目标网站,比如爬取某新闻网站的头条文章标题和链接。
目标网页:https://example-news-site.com
任务:抓取最新头条的标题和链接。
3. 基本代码
python
import requests
from bs4 import BeautifulSoup
# Step 1: 发送请求获取网页内容
url = "https://example-news-site.com"
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"
}
response = requests.get(url, headers=headers)
# 检查请求是否成功
if response.status_code == 200:
# Step 2: 解析 HTML
soup = BeautifulSoup(response.text, "lxml")
# Step 3: 提取数据
headlines = soup.find_all("h2", class_="headline") # 根据网页的实际结构调整选择器
for headline in headlines:
title = headline.text.strip()
link = headline.find("a")["href"]
print(f"Title: {title}")
print(f"Link: {link}")
else:
print(f"Failed to fetch the page: {response.status_code}")
4. 代码解读
- HTTP 请求
- 使用 requests.get 发送 GET 请求。
- 设置 headers 模拟浏览器访问,避免被反爬虫机制屏蔽。
- HTML 解析
- soup = BeautifulSoup(response.text, "lxml") 将 HTML 转换为可操作对象。
- 使用 find_all 按标签和类名提取内容。
- 数据提取
- .text 提取标签内容。
- ["href"] 获取链接属性。
5. 注意事项
- 网站结构
- 网页结构可能经常变化,选择器需要及时调整。
- 反爬虫
- 添加随机 User-Agent。
设置请求间隔避免频繁访问:
python
import time
time.sleep(1)
- 合法性
- 确保遵守目标网站的 robots.txt 规则。
6. 高级功能
(1) 数据存储
将爬取的数据存入 CSV 文件:
python
import csv
# 存储数据
with open("headlines.csv", mode="w", encoding="utf-8", newline="") as file:
writer = csv.writer(file)
writer.writerow(["Title", "Link"]) # 表头
for headline in headlines:
title = headline.text.strip()
link = headline.find("a")["href"]
writer.writerow([title, link])
(2) 爬取多页数据
python
for page in range(1, 6): # 假设有 5 页
url = f"https://example-news-site.com/page/{page}"
response = requests.get(url, headers=headers)
# 同样的解析和提取逻辑
(3) 动态内容爬取
对于 JavaScript 渲染的内容,可以使用 selenium:
bash
pip install selenium
配合浏览器驱动,完成动态加载的网页爬取。
7. 示例输出
plaintext
Title: Breaking News: Python Web Scraping
Link: https://example-news-site.com/breaking-news-python-web-scraping
Title: How to Build a Web Crawler
Link: https://example-news-site.com/build-web-crawler
猜你喜欢
- 2024-12-18 轻松解析数据!你不可不知的Python宝藏库——parser模块
- 2024-12-18 基于Google Gemini的网页抓取 谷歌怎么抓取网页里的图片
- 2024-12-18 使用Python抓取欧洲足球联赛数据 python 竞彩
- 2024-12-18 网络爬虫——从网站中提取有用的数据
- 2024-12-18 网上售卖几百一月的微信机器,Python几十行代码就能搞定
- 2024-12-18 一个Python编写的小说下载器 用python写小说
- 2024-12-18 LangChainV0.2-进阶教程:构建一个RAG应用
- 2024-12-18 Python应用短文,如何自制一个简易的网络爬虫
- 2024-12-18 机器学习第五发:BS教你如何解析网页,规整数据?
- 2024-12-18 python3的bs4模块的安装、介绍 python中bs4模块
你 发表评论:
欢迎- 367℃用AI Agent治理微服务的复杂性问题|QCon
- 358℃初次使用IntelliJ IDEA新建Maven项目
- 358℃手把手教程「JavaWeb」优雅的SpringMvc+Mybatis整合之路
- 351℃Maven技术方案最全手册(mavena)
- 348℃安利Touch Bar 专属应用,让闲置的Touch Bar活跃起来!
- 346℃InfoQ 2024 年趋势报告:架构篇(infoq+2024+年趋势报告:架构篇分析)
- 345℃IntelliJ IDEA 2018版本和2022版本创建 Maven 项目对比
- 342℃从头搭建 IntelliJ IDEA 环境(intellij idea建包)
- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)