前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Python爬虫入门案例详细教程

Python爬虫入门案例详细教程

原创
作者头像
华科云商小徐
发布于 2025-04-03 02:08:12
发布于 2025-04-03 02:08:12
22500
代码可运行
举报
文章被收录于专栏:小徐学爬虫小徐学爬虫
运行总次数:0
代码可运行

刚入门的新手想要一个快速上手的爬虫案例。案例要简单易懂,步骤清晰,不需要复杂的设置。然后,考虑使用哪个库。Requests和BeautifulSoup是比较常见且容易上手的组合,适合静态页面。如果用户以后需要处理动态内容,可能需要提到Selenium或Scrapy,但作为入门案例,先保持简单。

接下来,找一个合适的网站作为例子。某网站电影Top250比较稳定,结构简单,适合练习。不过要提醒遵守robots.txt和版权问题,避免法律风险。

以下是一个适合快速上手的 Python 爬虫案例,使用 requestsBeautifulSoup 抓取豆瓣电影 Top250 的基本信息。代码简单易懂,适合新手快速理解爬虫流程。


环境准备

  1. 安装必要库: pip install requests beautifulsoup4

完整代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import requests
from bs4 import BeautifulSoup
import csv
​
# 1. 定义目标URL和请求头(模拟浏览器访问)
url = "https://movie.douban.com/top250"
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"
}
​
# 2. 发送HTTP请求
response = requests.get(url, headers=headers)
response.encoding = "utf-8"  # 设置编码
​
# 3. 解析HTML内容
soup = BeautifulSoup(response.text, "html.parser")
​
# 4. 提取数据
movies = []
for item in soup.find_all("div", class_="item"):
    title = item.find("span", class_="title").text  # 电影标题
    rating = item.find("span", class_="rating_num").text  # 评分
    link = item.find("a")["href"]  # 详情页链接
    movies.append([title, rating, link])
​
# 5. 保存为CSV文件
with open("douban_top250.csv", "w", newline="", encoding="utf-8") as file:
    writer = csv.writer(file)
    writer.writerow(["Title", "Rating", "Link"])  # 表头
    writer.writerows(movies)print("数据已保存到 douban_top250.csv!")

代码解析

  1. 请求头(Headers) 使用 User-Agent 模拟浏览器访问,避免被网站反爬虫拦截。
  2. 发送请求 requests.get() 发送 GET 请求,获取网页内容。
  3. 解析数据
    • BeautifulSoup 解析 HTML 结构。
    • find_all("div", class_="item") 定位电影条目。
    • 通过 find() 方法提取标题、评分和链接。
  4. 保存数据 将数据写入 CSV 文件,方便后续分析。

运行结果

生成的 douban_top250.csv 文件内容示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Title,Rating,Link
肖申克的救赎,9.7,https://movie.douban.com/subject/1292052/
霸王别姬,9.6,https://movie.douban.com/subject/1291546/
阿甘正传,9.5,https://movie.douban.com/subject/1292720/
...

扩展学习

  1. 分页爬取 修改 URL 为 https://movie.douban.com/top250?start={0-225},循环抓取全部25页数据。
  2. 处理动态内容 如果遇到动态加载的网站(如 JavaScript 渲染),可使用 SeleniumScrapy-Splash
  3. 反爬虫策略
    • 添加随机延迟(如 time.sleep(1))。
    • 使用代理 IP(如 requests.get(proxies=proxy))。
  4. 遵守规则
    • 检查目标网站的 robots.txt(如 https://www.douban.com/robots.txt)。
    • 控制请求频率,避免对服务器造成压力。

通过这个案例,我们可以快速掌握爬虫的基本流程:发送请求 → 解析内容 → 提取数据 → 持久化存储

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
JS实现的ajax和同源策略
其实AJAX就是在Javascript中多添加了一个对象:XMLHttpRequest对象。所有的异步交互都是使用XMLHttpServlet对象完成的。也就是说,我们只需要学习一个Javascript的新对象即可。
用户1214487
2022/03/26
2.5K0
JS实现的ajax和同源策略
详细解读Jquery各Ajax函数:$.get(),$.post(),$.ajax(),$.getJSON()
一,$.get(url,[data],[callback]) 说明:url为请求地址,data为请求数据的列表(是可选的,也可以将要传的参数写在url里面),callback为请求成功后的回调函数,该函数接受两个参数,第一个为服务器返回的数据,第二个参数为服务器的状态,是可选参数。而其中,服务器返回数据的格式其实是字符串形势,并不是我们想要的json数据格式,在此引用只是为了对比说明。 1 $.get("data.php",$("#firstName.val()"),function(data){ 2 3
用户1214487
2018/01/24
4K0
ajax跨域的基本流程
创建XMLHttpRequest对象,也就是创建一个异步调用对象;判断XHR对象属性;创建一个新的HTTP请求,并指定该HTTP请求的方法、URL及验证信息;设置响应HTTP请求状态变化的函数;发送HTTP请求;获取异步调用返回的数据;使用JavaScript和DOM实现局部刷新。
行云博客
2020/07/13
9290
JavaScript------脚本化HTTP
   var requerst = new XMLHttpRequest(); //实例化
JQ实验室
2022/02/09
3570
Django---Ajax
Ajax准备知识:json 什么是json? 定义: JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式。 它基于 ECMAScript (w3c制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。 简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。 讲json对象,不得不提到JS对象: 合格的json对象:
用户1214487
2018/01/24
4.9K0
Django---Ajax
深入解析AJAX的原理
AJAX:Asynchronous JavaScript And Xml(异步的JS和XML) 同步:客户端发起请求》服务端的处理和响应》客户端重新载入页面(循环) 异步:客户端实时请求》服务端处理和响应》客户端获得响应后局部刷新页面 异步实现的关键是,XMLHttpRequest对象的出现 创建XHR对象 var request; if(window.XMLHttpRequest){ request = new XMLHttpRequest(); //IE7+,Firefox,Chrome,Op
小古哥
2018/03/08
1.2K0
深入解析AJAX的原理
史上最全的AJAX
对于web应用程序:用户浏览器发送请求.服务器接收并处理请求,然后返回结果,往往返回就是字符串(HTML),浏览器将字符串(HTML),渲染并显示浏览器上·
Wyc
2018/09/11
4.4K0
ajax跨域问题-web开发必会
ajax跨域问题 跨域 同源策略限制 同源策略阻止从一个域上加载的脚本获取或操作另一个域上的文档属性。也就是说,受到请求的 URL 的域必须与当前 Web 页面的域相同。这意味着浏览器隔离来自不同源的内容,以防止它们之间的操作。 解决方式 通常来说,比较通用的有如下两种方式,一种是从服务器端下手,另一种则是从客户端的角度出发。二者各有利弊,具体要使用哪种方式还需要具体的分析。 服务器设置响应头 服务器代理 客户端采用脚本回调机制。 方式一 Access-Control-Allow-Origin 关键字只有在
Java帮帮
2018/03/19
1.7K0
ajax跨域问题-web开发必会
关于ajax学习笔记
只要这个属性值发生了变化,就会触发一个事件onreadystatechange事件,就可以使用xhr.onreadystatechange = function(){}来捕获readyState变化之后做的事情。
前端正义联盟
2018/08/14
1.8K0
关于ajax学习笔记
CORS和JSONP跨域漏洞学习知识点
不同源的客户端脚本在没有明确授权的情况下,不能读写对方资源。只有同一个源的脚本才可以赋予dom、读写cookie、session、ajax等操作的权限,例如a.com可以随意调用b.com的接口去修改数据
UzJu@菜菜狗
2022/04/25
5440
CORS和JSONP跨域漏洞学习知识点
Web前端-Ajax基础技术(下)
ajax,web程序是将信息放入公共的服务器,让所有网络用户可以通过浏览器进行访问。
达达前端
2019/07/03
2.6K0
Web前端-Ajax基础技术(下)
SpringMVC-06 Ajax
1、新建一个module :springmvc05-Ajax , 导入web支持!
张小驰出没
2021/04/15
1.1K0
SpringMVC-06  Ajax
jQuery 中的 Ajax 方法(节选)
$.ajax() 基本用法: $.ajax({ url: url, // 地址 data: data, // 参数 type: 'POST', // 提交方式 可以选择 post/get 推荐 post async: false, // 同步异步 dataType: 'json', // 返回数据
Leophen
2019/08/23
8580
2、原生AJAX
********************************** ajax *********************************
打不着的大喇叭
2024/03/11
1010
ajax全套
对于WEB应用程序:用户浏览器发送请求,服务器接收并处理请求,然后返回结果,往往返回就是字符串(HTML),浏览器将字符串(HTML)渲染并显示浏览器上。
菲宇
2019/06/13
3.1K0
ajax全套
原生——ajax
什么是Ajax?(前后端数据交互) Asynchronous JavaScript and XML(异步JavaScript和XML)
FinGet
2019/06/28
2K0
【Java 进阶篇】Ajax 入门:打开前端异步交互的大门
欢迎来到前端异步交互的世界!在这篇博客中,我们将深入探讨 Ajax(Asynchronous JavaScript and XML),这是一项能够让你的网页在不刷新的情况下与服务器进行数据交互的技术。无论你是刚刚踏入前端开发的小白,还是有一定经验的开发者,相信通过本文的学习,你将对 Ajax 有更深入的理解。
繁依Fanyi
2023/11/20
8770
【Java 进阶篇】Ajax 入门:打开前端异步交互的大门
Django之json、Ajax简介及实例介绍
JSON 格式于2001年由 Douglas Crockford 提出,目的就是取代繁琐笨重的 XML 格式。
菲宇
2019/06/13
6.7K0
Django之json、Ajax简介及实例介绍
AJAX和JSON
open方法不会向服务器发送真正请求,它相当于初始化请求并准备发送只能向同一个域中使用相同协议和端口的URL发送请求,否则会因为安全原因而报错。
乐心湖
2021/01/18
2.7K0
AJAX和JSON
Web前端-Ajax基础技术(上)
ajax是浏览器提供一套的api,用于向服务器发出请求,接受服务端返回的响应,通过javascript调用,实现通过代码控制请求与响应,实现网络编程。
达达前端
2019/07/03
1.5K0
Web前端-Ajax基础技术(上)
相关推荐
JS实现的ajax和同源策略
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档