Python实现一个基础爬虫?(怎么用python做爬虫)
ccwgpt 2025-06-12 11:17 13 浏览 0 评论
Python爬虫技术就是指通过Python语言来编写一些自动化的数据处理程序从网页上来获取自己想要的数据,我们可以通过Python爬虫来获取公开网页上的数据,对数据进行分析、存储、数据可视化展示等操作,下面我们就带大家来完成一个最基础的Python爬虫的搭建。
环境准备
想要实现Python爬虫,就必须要确保安装了Python的环境以及必要的Python爬虫库,如下所示,我们可以通过pip工具来安装需要的爬虫库。
pip install requests
pip install beautifulsoup4
其中
- requests:用于发送 HTTP 请求并获取网页内容。
- beautifulsoup4:用于解析 HTML 页面,提取数据。
发送请求获取网页内容
爬虫的第一步也是比较核心的一步就是发送HTTP请求获取网页中HTML的内容。一般情况下这个操作通常就是由我们的request库来完成,如下所示。
import requests
# 目标网址
url = "https://example.com"
# 发送 GET 请求
response = requests.get(url)
# 检查请求是否成功
if response.status_code == 200:
print(response.text) # 打印网页内容
else:
print("请求失败,状态码:", response.status_code)
解析网页内容
通过Request获取到网页中的内容之后,接下来就是需要通过BeautifulSoup 来解析 HTML,然后提取到我们需要的网页中的数据内容,如下所示。
from bs4 import BeautifulSoup
# 获取网页内容
html_content = response.text
# 创建 BeautifulSoup 对象进行解析
soup = BeautifulSoup(html_content, 'html.parser')
# 输出网页的结构
print(soup.prettify()) # 美化输出 HTML 结构
提取特定内容
如果想要获取到网页中的某些特定的数据信息,如下所示,展示了如何获取网页中的所有的连接信息。
# 查找所有的 <a> 标签
links = soup.find_all('a')
# 打印所有链接的 href 属性
for link in links:
print(link.get('href'))
或者可以根据HTML的标签、ID、Class等属性提取对应的展示标签内容,来获取相关的信息,如下所示。
# 根据 class 属性查找
links = soup.find_all('a', class_='some-class')
# 根据 id 属性查找
header = soup.find(id='header-id')
print(header)
模拟浏览器行为(例如登录)
当然除了上面的这些简单的操作之外,我们还可以模拟用户的操作行为,例如网站上可能会通过JavaScript或者是通过表单的形式来提交用户登录信息,这个时候,我们就可以通过Request库来模拟网页等操作,如下所示。
# 登录时需要提交的数据
payload = {
'username': 'your_username',
'password': 'your_password',
}
# 登录请求
login_url = "https://example.com/login"
session = requests.Session() # 创建一个会话
login_response = session.post(login_url, data=payload)
# 访问需要登录后的页面
page_url = "https://example.com/dashboard"
page_response = session.get(page_url)
# 打印页面内容
print(page_response.text)
处理反爬虫机制
现在很多网站为了能够留住客户信息获取渠道,都设置有反爬虫机制,例如对于IP的限制、对于验证码限制、对于User-Agent的检测等等,为了应对这些情况我们可以设置请求头信息,将我们的请求伪装成浏览器的请求,然后可以防止反爬虫机制,如下所示。
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
}
response = requests.get(url, headers=headers)
print(response.text)
数据存储
最终在我们获取到了数据之后,我们可以将这些数据存储到本地方便在其他地方使用,如下所示,展示了如何将数据存储到CSV 文件中。
import csv
# 假设我们提取了标题和链接
data = [("Title1", "http://example.com/1"), ("Title2", "http://example.com/2")]
# 存储到 CSV 文件
with open('output.csv', mode='w', newline='', encoding='utf-8') as file:
writer = csv.writer(file)
writer.writerow(['Title', 'URL']) # 写入表头
writer.writerows(data)
或者也可以将数据存储到JSON文件中提供Mork调用。
import json
data = {
"title": "Example Title",
"url": "http://example.com"
}
with open('output.json', 'w', encoding='utf-8') as json_file:
json.dump(data, json_file, ensure_ascii=False, indent=4)
爬虫的基本结构
介绍完上面的步骤之后,下面我们给出一个简单爬虫的基本结构如下所示。
import requests
from bs4 import BeautifulSoup
def fetch_data(url):
# 发送请求
response = requests.get(url)
if response.status_code != 200:
print("请求失败")
return None
return response.text
def parse_data(html):
# 解析 HTML 内容
soup = BeautifulSoup(html, 'html.parser')
# 提取数据
data = []
for item in soup.find_all('div', class_='item'):
title = item.find('h2').get_text()
link = item.find('a')['href']
data.append((title, link))
return data
def save_data(data):
# 存储数据
with open('output.csv', 'w', newline='', encoding='utf-8') as file:
writer = csv.writer(file)
writer.writerow(['Title', 'Link'])
writer.writerows(data)
def main():
url = "https://example.com"
html = fetch_data(url)
if html:
data = parse_data(html)
save_data(data)
if __name__ == '__main__':
main()
在上面的这个结构中,展示了如何发送请求、如何解析网页数据。然后通过循环、条件判断等操作来获取网页信息,然后将数据写入到了CSV文件中。
总结
上面这个步骤,只涉及到了Python爬虫技术最为核心基础的部分,在实际开发中还有很多高级技巧的使用,例如AJAX请求处理、利用代理防止IP封锁、定时爬取等,但是需要注意爬虫本身并不违法,但是利用技术干一些违法的事情就是破坏底线了,所以如果网站明确禁止爬取,最好遵守规则。
相关推荐
- 自己动手写Android数据库框架_android开发数据库搭建
-
http://blog.csdn.net/feiduclear_up/article/details/50557590推荐理由关于Android数据库操作,由于每次都要自己写数据库操作,每次还得去...
- 谷歌开源大模型评测工具LMEval,打通谷歌、OpenAI、Anthropic
-
智东西编译|金碧辉编辑|程茜智东西5月28日消息,据科技媒体TheDecoder5月26日报道,当天,谷歌正式发布开源大模型评测框架LMEval,支持对GPT-4o、Claude3.7...
- 工信部:着力推动大模型算法、框架等基础性原创性的技术突破
-
工信部新闻发言人今日在发布会上表示,下一步,我们将坚持突出重点领域,大力推动制造业数字化转型,推动人工智能创新应用。主要从以下四个方面着力。一是夯实人工智能技术底座。通过科技创新重大项目,着力推动大模...
- 乒乓反复纠结“框架不稳定”的三个小误区
-
很多球友由于对框架的认知不清晰,往往会把“框架不稳定”当成一种心理负担,从而影响学球进度,其典型状态就是训练中有模有样,一旦进入实战,就像被捆住了手脚。通过训练和学习,结合“基本功打卡群”球友们交流发...
- 前AMD、英特尔显卡架构师Raja再战GPU,号称要全面重构堆栈
-
IT之家8月5日消息,知名GPU架构师拉贾科杜里(RajaKoduri)此前曾先后在AMD和英特尔的显卡部门担任要职。而在今日,由Raja创立的GPU软件与IP初创企...
- 三种必须掌握的嵌入式开发程序架构
-
前言在嵌入式软件开发,包括单片机开发中,软件架构对于开发人员是一个必须认真考虑的问题。软件架构对于系统整体的稳定性和可靠性是非常重要的,一个合适的软件架构不仅结构清晰,并且便于开发。我相...
- 怪不得别人3秒就知道软考案例怎么做能50+
-
软考高级统一合格标准必须三科都达到45分,案例分析也一直是考生头疼的一门,但是掌握到得分点,案例能不能50+还不是你们说了算吗?今天就结合架构案例考点,分享实用的备考攻略~一、吃透考点,搭建知识框架从...
- UML统一建模常用图有哪些,各自的作用是什么?一篇文章彻底讲透
-
10万+爆款解析:9大UML图实战案例,小白也能秒懂!为什么需要UML?UML(统一建模语言)是软件开发的“蓝图”,用图形化语言描述系统结构、行为和交互,让复杂需求一目了然。它能:降低沟通成本避...
- 勒索软件转向云原生架构,直指备份基础设施
-
勒索软件组织和其他网络犯罪分子正越来越多地将目标对准基于云的备份系统,对久已确立的灾难恢复方法构成了挑战。谷歌安全研究人员在一份关于云安全威胁演变的报告中警告称,随着攻击者不断改进数据窃取、身份泄露和...
- ConceptDraw DIAGRAM:释放创意,绘就高效办公新未来
-
在当今数字化时代,可视化工具已成为提升工作效率和激发创意的关键。ConceptDrawDIAGRAM,作为一款世界顶级的商业绘图软件,凭借其强大的功能和用户友好的界面,正逐渐成为众多专业人士的首选绘...
- APP 制作界面设计教程:一步到位_app界面设计模板一套
-
想让APP界面设计高效落地,无需繁琐流程,掌握“框架搭建—细节填充—体验优化”三步法,即可一步到位完成专业级设计。黄金框架搭建是基础。采用“三三制布局”:将屏幕横向三等分,纵向保留三...
- MCP 的工作原理:关键组件_mcp部件
-
以下是MCP架构的关键组件:MCP主机:像ClaudeDesktop、GitHubCopilot或旅行助手这样的AI智能体,它们希望通过MCP协议访问工具、资源等。MCP主机会...
- 软件架构_软件架构师工资一般多少
-
软件架构师自身需要是程序员,并且必须一直坚持做一线程序员。软件架构应该是能力最强的一群程序员,他们通常会在自身承接编程任务的同时,逐渐引导整个团队向一个能够最大化生产力的系统设计方向前进。软件系统的架...
- 不知不觉将手机字体调大!老花眼是因为“老了吗”?
-
现在不管是联系、交友,还是购物,都离不开手机。中老年人使用手机的时间也在逐渐加长,刷抖音、看短视频、发朋友圈……看手机的同时,人们也不得不面对“视力危机”——老花眼,习惯眯眼看、凑近看、瞪眼看,不少人...
- 8000通用汉字学习系列讲座(第046讲)
-
[表声母字]加(续)[从声汉字]伽茄泇迦枷痂袈笳嘉驾架咖贺瘸(计14字)嘉[正音]标准音读jiā。[辨形]上下结构,十四画。会意形声字,从壴从加,加也表声。注:从壴,字义与鼓乐有关;从加,字义与...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- 框架图 (58)
- flask框架 (53)
- quartz框架 (51)
- abp框架 (47)
- springmvc框架 (49)
- 分布式事务框架 (65)
- scrapy框架 (56)
- shiro框架 (61)
- 定时任务框架 (56)
- java日志框架 (61)
- mfc框架 (52)
- abb框架断路器 (48)
- beego框架 (52)
- java框架spring (58)
- grpc框架 (65)
- tornado框架 (48)
- 前端框架bootstrap (54)
- orm框架有哪些 (51)
- 知识框架图 (52)
- ppt框架 (55)
- 框架图模板 (59)
- 内联框架 (52)
- cad怎么画框架 (58)
- ssm框架实现登录注册 (49)
- oracle字符串长度 (48)