『Python爬虫』极简入门

本文简介

点赞 + 收藏 + 关注 = 学会了

声明:请勿使用爬虫技术获取公民隐私数据、±数据以及企业或个人不允许你获取的数据。

本文介绍如何使用 Python 写一只简单的爬虫,作为入门篇,这个程序不会很复杂,但至少可以讲明爬虫是个什么东西。

写一个爬虫程序其实很简单,从整体来看只需3步:

  1. 发起网络请求,获取网页内容。
  2. 解析网页的内容。
  3. 储存数据,或者拿来做数据分析。

但第三步其实已经不属于“爬”这个动作了,所以本文只介绍前2步。至于第三步存储数据,之后会写几篇文章讲讲 Python 如何操作数据库,之后也会介绍 Python 热门的数据分析工具(先画个饼)。

动手操作

十个教爬虫,九个爬豆瓣。注意,本文只是拿豆瓣来举例,你可不要真的24小时一直在爬它呀。

发起网络请求

Python 中要发起网络请求,可以使用 requests

如果还没安装 requests 可以用以下命令安装

pip install requests

然后引入使用

import requests

我要获取豆瓣电影Top250的数据,电影Top250的页面地址是 https://movie.douban.com/top250。可以用 get 请求。

res = requests.get("https://movie.douban.com/top250")
print(res)

上面这段代码的意思是通过 requests.get 发起 get 请求,并把结果输出看看。

01.png

看到输出结果的状态码是 418,表示豆瓣的服务器不想理你。

出现这种情况的原因是豆瓣只想服务用浏览器访问的用户,你通过写代码的方式来访问它就不想鸟你了。

于是我们可以通过请求头模拟自己是浏览器。打开浏览器,按F12,切换到Network,然后刷新一下页面。之后随便点一个请求,把它的 User-Agent 的值复制下来。

02.png

在使用 requests 发起请求时在 headers 里把 User-Agent 的值带上。

# 获取数据
headers = {"User-Agent": "你的 User-Agent"}
res = requests.get("https://movie.douban.com/top250", headers=headers)

print(res)

03.png

此时状态码返回 200 证明成功了。

除了 200 可能还有其他状态码是表示成功的,如果要逐一判断是比较麻烦的。requests 的返回值里提供了一个 .ok 的属性帮助我们快速判断响应内容是否获取成功。

# 省略前面的代码...

print(res.ok)

如果 res.ok 返回 Treu 就表示响应成功。

然后我们看看返回的内容是什么,可以查看 .text

if (res.ok):
    print(res.text)

04.png

返回的是这个页面的 HTML 内容。到此,我们获取这个页面的数据已经成功了。接下来要做的就是解析这个页面的数据。

解析网页内容

本文介绍一个很简单的解析网页元素的工具,叫 Beautiful Soup 中文名叫“靓汤”,广东人最爱。

在写本文时,Beautiful Soup 已经出到第4版了。

  • Beautiful Soup官网

  • Beautiful Soup文档

要安装 Beautiful Soup 可以使用下面这条命令。

pip install beautifulsoup4

然后引入使用。我们接回上面的内容

from bs4 import BeautifulSoup
import requests

# 获取数据
headers = {"User-Agent": "你的 User-Agent"}
res = requests.get("https://movie.douban.com/top250", headers=headers).text

print(res)

此时输出的内容是

05.png

看红色箭头指向的那句就是电影名了。<span class="title">霸王别姬</span>

这个电影名用 span 标签包裹着,而且它的 classtitle

于是我们可以使用 BeautifulSoupfindAll 找到所有符合 classtitlespan 元素。

# 省略部分代码

# 把内容丢给 BeautifulSoup 解析
soup = BeautifulSoup(res, "html.parser")
# 使用 findAll 找到所有 class 为 title 的 span 元素
all_films = soup.findAll("span", attrs={"class": "title"})
print(all_films)

输出的结果如下图所示:

06.png

这样就把本页符合规则的标签都整理出来了。

BeautifulSoup 第一个参数是要解释的内容,第二个参数 html.parser 是告诉 BeautifulSoup 要解析的是 HTML 内容。

接下来我们可以使用 for 循环把这些标签逐个输出,并使用 .string 属性把标签里的字符串提取出来。

for film_name in all_films:
  print(film_name.string)

07.png

问题来了,为什么有些电影名前面有斜杠,有些又没有斜杠?

08.png

打开网页看源码,电影名的别名是用斜杠分隔的,而且它们都符合 <span class="title"> 这个规则。

所以我们在遍历的时候可以将不含斜杠的电影名提取出来。

for film_name in all_films:
    if '/' not in film_name.string:
        print(film_name.string)

09.png

但这电影数量和Top250的数量相差甚远。原因是我们爬取的这页只展示了25条数据。

10.png

如果要爬取250条数据就要先搞清分页时要传什么参数。

点开第2页可以看到url变了。多了个 start=25

11.png

点开第3页发现 start=50 。我们根据这个规则可以写一个遍历方法,将250条数据都拿回来。

具体代码如下:

from bs4 import BeautifulSoup
import requests

# 设置请求头
headers = {"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36"}

# 按规律遍历,请求Top250数据
for start_num in range(0, 250, 25):
    res = requests.get(f"https://movie.douban.com/top250?start={start_num}", headers=headers)
    soup = BeautifulSoup(res.text, "html.parser") # 开始解析html
    all_films = soup.findAll("span", attrs={"class": "title"}) # 获取所有电影名(含html标签)
    for film_name in all_films:
        if '/' not in film_name.string:
            print(film_name.string)

只需十来行代码就把豆瓣Top250的电影名都拿下了。

总结

python 是很擅长写爬虫的,相关的工具也非常多。本文介绍的属于最简单的一种爬虫,主要给各位工友建立学习信心。

之后会介绍更多爬虫相关的工具。

点赞 + 关注 + 收藏 = 学会了


如果你对Python感兴趣,想要学习python,这里给大家分享一份Python全套学习资料,都是我自己学习时整理的,希望可以帮到你,一起加油!

😝有需要的小伙伴,可以V扫描下方二维码免费领取🆓

1️⃣零基础入门

① 学习路线

对于从来没有接触过Python的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
在这里插入图片描述

② 路线对应学习视频

还有很多适合0基础入门的学习视频,有了这些视频,轻轻松松上手Python~
在这里插入图片描述

③练习题

每节视频课后,都有对应的练习题哦,可以检验学习成果哈哈!
在这里插入图片描述

Python兼职渠道推荐

学的同时助你创收,每天花1-2小时兼职,轻松稿定生活费.
在这里插入图片描述

2️⃣国内外Python书籍、文档

① 文档和书籍资料

在这里插入图片描述

3️⃣Python工具包+项目源码合集

①Python工具包

学习Python常用的开发软件都在这里了!每个都有详细的安装教程,保证你可以安装成功哦!
在这里插入图片描述

②Python实战案例

光学理论是没用的,要学会跟着一起敲代码,动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。100+实战案例源码等你来拿!
在这里插入图片描述

③Python小游戏源码

如果觉得上面的实战案例有点枯燥,可以试试自己用Python编写小游戏,让你的学习过程中增添一点趣味!
在这里插入图片描述

4️⃣Python面试题

我们学会了Python之后,有了技能就可以出去找工作啦!下面这些面试题是都来自阿里、腾讯、字节等一线互联网大厂,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
在这里插入图片描述
在这里插入图片描述

上述所有资料 ⚡️ ,朋友们如果有需要的,可以扫描下方👇👇👇二维码免费领取🆓

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/474440.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Nacos 配置管理-快速入门

** Nacos 配置管理-快速入门 ** 2024-3-18 段子手168 1、首先在 nacos 发布配置&#xff08;确认安装启动了 nacos 服务&#xff09;。 浏览器访问 http://127.0.0.1:8848/nacos, 打开 nacos 控制台&#xff0c; 并点击菜单&#xff1a;新增 --》配置管理 --》配置列表 --》…

html5cssjs代码 034 自定义字体

html5&css&js代码 034 自定义字体 一、代码二、解释 这是一个带有自定义字体的网页&#xff0c;设置了页面背景颜色、文字颜色以及全局样式。它定义了三种自定义字体并通过font-face规则引入外部字体文件&#xff0c;并通过CSS类&#xff08;.f1, .f2, .f3&#xff09;…

2024上半年四川省属事业单位报名指南✅

⏰报考时间 1⃣报名时间&#xff1a;2024年3月21日10:00——3月25日18:00 2⃣缴费时间&#xff1a;截止2024年3月26日18:00 ⚠通过网络报名且上传相片质量合格的报考者&#xff0c;未按要求在规定时间内进行网上缴费的&#xff0c;视为自动放弃报考。 3⃣公共科目笔试时间&…

力扣---两数相加

给你两个 非空 的链表&#xff0c;表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的&#xff0c;并且每个节点只能存储 一位 数字。 请你将两个数相加&#xff0c;并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外&#xff0c;这两个数都不会以 0 …

QGIS开发笔记(一):QGIS介绍、软件下载和加载shp地图数据Demo

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/136888334 红胖子网络科技博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬…

【亲测有效】axureRP9授权密钥 Mac/Windows

哪里有axureRP9授权密钥&#xff1f;这里为大家带来了axureRP9中文授权版资源&#xff0c;内含axureRP9授权密钥&#xff0c;亲测支持apple Intel/M1/M2以及Windows系统&#xff01; 【永久可用】axureRP9授权密钥 Mac版 【永久可用】axureRP9授权密钥 Windows版

吴恩达机器学习-可选实验室:简单神经网络(Simple Neural Network)

在这个实验室里&#xff0c;我们将使用Numpy构建一个小型神经网络。它将与您在Tensorflow中实现的“咖啡烘焙”网络相同。 import numpy as np import matplotlib.pyplot as plt plt.style.use(./deeplearning.mplstyle) import tensorflow as tf from lab_utils_common impor…

python网络爬虫实战教学——urllib的使用(3)

文章目录 专栏导读1、urlsplit2、urlunsplit3、urljoin4、urlencode 专栏导读 ✍ 作者简介&#xff1a;i阿极&#xff0c;CSDN 数据分析领域优质创作者&#xff0c;专注于分享python数据分析领域知识。 ✍ 本文录入于《python网络爬虫实战教学》&#xff0c;本专栏针对大学生、…

基于java+springboot+vue实现的学生管理系统(文末源码+Lw+ppt)23-486

摘 要 学生管理系统的目的是让使用者可以更方便的将人、设备和场景更立体的连接在一起。能让用户以更科幻的方式使用产品&#xff0c;体验高科技时代带给人们的方便&#xff0c;同时也能让用户体会到与以往常规产品不同的体验风格。 与安卓&#xff0c;iOS相比较起来&#x…

高校校园点餐系统|基于JSP技术+ Mysql+Java+ B/S结构的高校校园点餐系统设计与实现(可运行源码+数据库+设计文档)

推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 2024年56套包含java&#xff0c;ssm&#xff0c;springboot的平台设计与实现项目系统开发资源&#xff08;可…

百度智能云加速「低代码+大模型」融合,爱速搭位居 2023 年 IDC 低代码/无代码领导者象限

近期&#xff0c;IDC 发布了《IDC MarketScape: 中国低代码/无代码开发平台 2023 年厂商评估》研究报告。 IDC 预测&#xff0c;到 2027 年&#xff0c;低代码的市场规模将达到 106.3 亿人民币&#xff0c;未来 5 年市场年复合增长率为 32.3%。 凭借对企业级开发场景的深度支…

MD5源码(C语言描述)

本文介绍MD5源码&#xff08;C语言描述&#xff09;。 MD5(Message-Digest Algorithm 5)&#xff0c;即消息摘要算法5&#xff0c;是一种被广泛使用的消息散列算法。散列算法的基础原理是&#xff1a;将数据&#xff08;如一段文字&#xff09;经过运算转换为一段固定长度&…

自动推送个人站点到百度收录

自动推送个人站点到百度收录 准备 验证站点 访问百度收录官网注册帐号选择用户中心-站点管理 在“站点管理”里面点击“添加站点”&#xff0c;填写你的站点地址&#xff08;支持子域名&#xff09; 根据你的站点的内容、类型勾选站点属性 点击“验证站点”。 两种方式都可以…

ByteMD - 掘金社区 MarkDown 编辑器的免费开源的版本,可以在 Vue / React / Svelte 中使用

各位元宵节快乐&#xff0c;今天推荐一款字节跳动旗下掘金社区官方出品的 Markdown 编辑器 JS 开发库。 ByteMD 是一个用于 web 开发的 Markdown 编辑器 JavaScript 库&#xff0c;是字节跳动&#xff08;也就是掘金社区&#xff09;出品的 Markdown 格式的富文本编辑器&#…

阿里云服务器2核4G服务器收费价格表,1个月和一年报价

阿里云2核4G服务器多少钱一年&#xff1f;2核4G服务器1个月费用多少&#xff1f;2核4G服务器30元3个月、85元一年&#xff0c;轻量应用服务器2核4G4M带宽165元一年&#xff0c;企业用户2核4G5M带宽199元一年。本文阿里云服务器网整理的2核4G参加活动的主机是ECS经济型e实例和u1…

国辰智企TMS智慧园区物流一站式平台,优化园区物流,智取未来!

在传统的物流园区管理中&#xff0c;我们常常面临诸多问题。人工管理流程复杂&#xff0c;效率低下&#xff0c;导致园区运营成本居高不下。园区内堵车现象严重&#xff0c;交通混乱&#xff0c;影响物流效率和客户体验。安全管理不到位&#xff0c;存在诸多隐患&#xff0c;无…

基于单片机的太阳能热水器控制系统设计与仿真

目录 摘要 3 Controling system design and simulation of the solar water heater based on single chip microcomputer 4 第一章 前言 5 1.1设计背景和意义 5 1.2国内外的发展趋势 5 第二章 系统设计总览 7 2.1控制中心 7 2.2外围设备 7 第三章 系统硬件设计 8 3.1 总硬件的…

SUS-Chat-34B笔记

名称SUS-Chat: Instruction tuning done right团队南方科技大学、IDEA研究院CCNL团队代码地址https://github.com/SUSTech-IDEA/SUS-Chat简介具有超强多轮对话能力&#xff0c;擅长模仿人类思考过程&#xff0c;在各大榜单上超越同量级的模型。 介绍 SUS-Chat-34B模型是南方科…

[论文笔记] ChatDev:Communicative Agents for Software Development

Communicative Agents for Software Development&#xff08;大模型驱动的全流程自动化软件开发框架&#xff09; 会议arxiv 2023作者Chen Qian Xin Cong Wei Liu Cheng Yang团队Tsinghua University论文地址https://arxiv.org/pdf/2307.07924.pdf代码地址https://github.com/O…

旅游系统-软件与环境

运行 1.下载软件并进行环境配置 2.导入项目包以及SQL文件 (1)VsCode 管理员运行打开 a.新建terminal 注意&#xff1a; 1.执行 npm config set registry https://registry.npm.taobao.org 2.执行 npm install 3.执行 $env:NODE_OPTIONS“–openssl-legacy-provider” b.输入…