Python爬虫零基础入门教程

文章目录:

一:Python基础

二:爬虫须知

1.流程

2.遵守规则

三:HTTP请求和响应

1.相关定义 

2.HTTP请求响应 

2.1 完整的HTTP请求

2.2 完整的HTTP响应

3.Requests库

四:HTML

1.HTML网页结构

2.常用标签

3.BeautifulSoup库

实战:从豆瓣获取电影Top250

1.完整代码 

2.运行结果


参考:Python+爬虫

一:Python基础

Python快速入门教程

二:爬虫须知

1.流程

第一步:获取网页内容(Requests库发送HTTP请求)第二步:解析网页内容(BeautifulSoup库获取HTML网页结构内容信息)第三步:储存(数据库) 或 得到更多信息(数据分析)

2.遵守规则

1.不要爬取公民隐私数据2.不要爬取受著作权保护的内容3.不要爬取国家事务国防建设和尖端技术领域
4.请求数量和频率不能过高:否则可能无异于DDos攻击5.有反扒限制就不要去爬取了:需要登录、验证码6.查看网站的robots.txt文件:了解可爬取的网页路径范围

三:HTTP请求和响应

1.相关定义 

HTTP:超文本传输协议客户端和服务器之间的请求响应协议请求方法Get:获得数据Post:创建数据接收的响应数据类型HTML:text/htmlJSON:application/jsonHTML和JSON:text/html,application/json任意类型:/*/常见的状态码和状态消息200 ok                              客户端请求成功300 Moved Permanently               重定向资源被永久移动到新地址400 Bad Request                     客户端不能被服务器所理解401 Unauthorized                    请求未经授权403 Forbidden                       服务器拒绝提供服务404 Not Found                       请求资源不存在500 Internal Server Error           服务器发生不可预期的错误503 Server Unavailable              服务器当前不能处理客户端的请求

2.HTTP请求响应 

2.1 完整的HTTP请求

POST请求#请求行                        协议版本POST/user/info?new_user=true HTTP/1.1#请求头  域名             资源路径           查询参数Host:www.douban.com/movie/top250?start=75&filter=unwatchedUser-Agent:curl/7.77.0Accept:*/*#请求体{"username":"刘鑫磊","email":"123@qq.com"}GET请求#请求行GET/user/info?new_user=true HTTP/1.1#请求头Host:www.example.comUser-Agent:curl/7.77.0Accept:*/*

2.2 完整的HTTP响应

#状态行:协议版本 状态码 状态消息
HTTP/1.1 200 OK
#响应头
Date:Fri,27 Jan 2023 02:10:48 GMT
Content-Type:text/html;charset=utf-8
#响应体
<!DOCTYPE html><head><title>首页</title></head><body><h1>刘鑫磊</h1><p>非常棒</p></body>
</html>

3.Requests库

#在终端输入(视图——>工具窗口——>终端):pip install requests
import requests#把爬虫程序伪装成正常的浏览器
#任意网页——>鼠标右键——>检查——>Network——>User-Agent——>复制过来
headers={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36"}response=requests.get("https://movie.douban.com/top250",headers=headers)
print(response)
print(response.status_code)
if response.ok:# 获取响应体内容print(response.text)
else:print("请求失败")

四:HTML

1.HTML网页结构

<!DOCTYPE HTML>
<html><body><h1>我是标题</h1><p>我是一段文字</p></body>
</html>

2.常用标签

标题:<h1></h1>文本段落:<p></p>换行:<br>图片:<img src="图片链接">链接:<a href="链接地址" target="_self"></a>       target="_blank"容器:<span></span>                               内联元素不会独占一块,一行可写多个
盒子:<div></div>                                 块级有序列表:<ol><li></li></ol>
无序列表:<ul><li></li></ul>表格<table><thead>                 #头部<tr>                #行<td></td>       #列</tr><thead><tbody>                 #主体<tr>                # 行<td></td>       # 列</tr></tbody></table>class属性:定义元素的类名称,帮助我们分组class="content"     class="review"

“1.html”文件 

<!DOCTYPE html>
<html><head><title>我是标题</title></head><body><h1>我是一级标题</h1><h2>我是二级标题</h2><h6>我是六级标题</h6><p>我是文本段落</p><br><b>加粗字体</b><i>斜体</i><u>下划线</u><img src="图片链接"><a href="https://www.baidu.com" target="_self">百度链接</a><div style="background-color:red"></div><span></span> <ol><li>我是第一项</li><li>我是第二项</li></ol><ul><li>我是第一项</li><li>我是第二项</li></ul><table border="1"><thead>                 <tr>               <td>头部1</td>      <td>头部2</td> </tr><thead><tbody>           <tr>    <td>111</td>     <td>222</td> </tr></tbody></table></body>
</html>

3.BeautifulSoup库

# pip install bs4
from bs4 import BeautifulSoup
import requestscontent = requests.get("http://www.example.com/").text
soup=BeautifulSoup(content,"html.parser")                        #解析内容,指定解析器(解析成树状结构)print(soup.p)#举例    p标签内容
all_prices=soup.find_all("p",attrs={"class":"price_color"})      #p标签,类:类名
for price in all_prices:print(price.string[2:])                                      #会把标签包围的文章显示出来  [2:]大于等于2#举例    h3里面的a标签内容
all_titles=soup.find_all("h3")
for titel in all_titles:all_links=titel.find_all("a")for link in all_links:print(link.string)

实战:从豆瓣获取电影Top250

1.完整代码 

#pip install requests
import requests
# pip install bs4
from bs4 import BeautifulSoup#把爬虫程序伪装成正常的浏览器
#任意网页——>鼠标右键——>检查——>Network——>User-Agent——>复制过来
headers={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36"}for strat_num in range(0,250,25):   #每页有25个电影#print(strat_num)response = requests.get(f"https://movie.douban.com/top250?start={strat_num}", headers=headers)  # 地址html = response.textsoup = BeautifulSoup(html, "html.parser")  # 获取网页结构内容all_titles = soup.findAll("span", attrs={"class": "title"})  # span标签 的里面类class=titlefor title in all_titles:# print(title.string)title_string = title.stringif "/" not in title_string:  # 不带斜杠的中文名字print(title.string)

2.运行结果

G:\python\class1\venv\Scripts\python.exe G:\python\class1\demo1.py 
肖申克的救赎
霸王别姬
阿甘正传
泰坦尼克号
这个杀手不太冷
千与千寻
美丽人生
星际穿越
辛德勒的名单
盗梦空间
楚门的世界
忠犬八公的故事
海上钢琴师
三傻大闹宝莱坞
放牛班的春天
机器人总动员
疯狂动物城
无间道
控方证人
大话西游之大圣娶亲
熔炉
教父
触不可及
当幸福来敲门
末代皇帝
寻梦环游记
龙猫
怦然心动
活着
蝙蝠侠:黑暗骑士
哈利·波特与魔法石
指环王3:王者无敌
我不是药神
乱世佳人
飞屋环游记
素媛
哈尔的移动城堡
十二怒汉
何以为家
摔跤吧!爸爸
让子弹飞
猫鼠游戏
天空之城
鬼子来了
少年派的奇幻漂流
海蒂和爷爷
钢琴家
大话西游之月光宝盒
指环王2:双塔奇兵
闻香识女人

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端包管理器的工具,npm和Yarn以及pnpm是最常用的

目录 前言npm (Node Package Manager)npm简介npm的优势npm常用指令 YarnYarn简介Yarn的优势Yarn常用指令 pnpmpnpm简介pnpm的优势pnpm常用指令 npm、Yarn和pnpm这三种前端包管理工具的对比性能比较特点和用例比较选择依据 &#x1f44d; 点赞&#xff0c;你的认可是我创作的动力…

快速入门python机器学习

文章目录 机器学习概述1.1 人工智能概述机器学习与人工智能、深度学习1.1.2 机器学习、深度学习能做些什么 1.2 什么是机器学习1.2.1 定义1.2.2 解释1.2.3 数据集构成 1.3 机器学习算法分类1.3.1 总结1.3.2 练习1.3.3 机器学习算法分类 1.4 机器学习开发流程&#xff08;了解&a…

Java封装JDBC通用工具类

Java封装通用工具类 一、JDBC配置类二、配置文件三、通用工具类 一、JDBC配置类 import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.sql.*; import java.util.Properties;public …

centos安装supervisor和配置进程

使用 yum 安装 Supervisor&#xff1a; sudo yum install epel-release sudo yum install supervisor启动 Supervisor 服务并设置开机启动&#xff1a; sudo systemctl start supervisord sudo systemctl enable supervisord3.验证 Supervisor 是否已成功安装并正在运行 sud…

ubuntu基本操作

好记性不如烂笔头&#xff0c;把一些常用的ubuntu文件操作记录下来 1. 把一个文件夹下的所有文件复制到另一个文件夹下 sudo cp -r source_dir/* aim_dir/ 2. 克隆一个文件夹: 创建一个文件夹dir2&#xff0c;复制dir1中的所有文件到dir2中 cp -r dir1 dir2 3. 命令行查看…

ECharta雷达图 样式调整

预期效果&#xff1a; <template><div id"operationalRisk-radar-chart" class"h-290 w-385"></div> </template><script>export default {name: radarChart} </script> <script setup>import { onMounted, r…

Arduino驱动BMM150三轴地磁传感器(惯性测量传感器篇)

目录 1、传感器特性 2、硬件原理图 3、控制器和传感器连线图 4、驱动程序

day39

今日内容概要 数据库数据的演变史 数据存储的发展史 数据库的本质 数据库的分类 SQL与nosql的介绍 MySQL的介绍 MySQL的下载与安装 MySQL服务的制作 MySQL如何登录 管理员密码的修改以及忘记密码怎么办 基本的SQL语句(针对库、表、记录的增删改查) 数据库的演变史 …

【数据库】SQL 检索数据

检索数据 基本检索数据检索单个列检索多个列检索所有列检索不同的值限制检索数量 注释规则排序检索数据单列排序多列排序按列位置排序指定排序方向 基本检索数据 检索单个列 从 Products 表中检索一个名为 prod_name 的列&#xff1b; SELECT prod_name FROM Products;该 s…

CleanMyMac X4.14.4最新免费版本功能介绍

最新版CleanMyMac X 让您的Mac焕然一新&#xff0c;时刻保持安全&#xff01;CleanMyMac X是一款专业的Mac清理软件&#xff0c;可智能清理mac磁盘垃圾和多余语言安装包&#xff0c;快速释放电脑内存&#xff0c;轻松管理和升级Mac上的应用。同时CleanMyMac X可以强力卸载恶意软…

GEO生信数据挖掘(八)富集分析(GO 、KEGG、 GSEA 打包带走)

第六节&#xff0c;我们使用结核病基因数据&#xff0c;做了一个数据预处理的实操案例。例子中结核类型&#xff0c;包括结核&#xff0c;潜隐进展&#xff0c;对照和潜隐&#xff0c;四个类别。第七节延续上个数据&#xff0c;进行了差异分析。 本节对差异基因进行富集分析。 …

大咖云集,智慧碰撞|第 18 届 CLK 大会完整议程揭晓(内附报名通道)

自 2006 年以来&#xff0c;在国内 Linux 技术爱好者和行业公司的鼎力支持下&#xff0c;中国 Linux 内核开发者大会已走过 17个年头&#xff0c;是中国 Linux 内核领域最具影响力的峰会之一。今年的中国内核开发者大会依然秉承历届理念&#xff0c;以“自由、协作、创新”为理…

Kotlin协程简介

文章目录 官网地址1 来源2 出现原因3 特点1&#xff09; 轻量2&#xff09;内存泄漏更少3&#xff09;内置取消支持4&#xff09;Jetpack 集成 4 依赖项信息5 在后台线程中执行6 使用协程确保主线程安全7 处理异常 官网地址 https://developer.android.google.cn/kotlin/corou…

挑战分布式架构,解密Java在业务场景下的高效应用面试题目介绍常用的通信方式有哪些请分别说明各自的特点和适用场景

本人详解 作者:王文峰,参加过 CSDN 2020年度博客之星,《Java王大师王天师》作者 公众号:山峯草堂,非技术多篇文章,专注于天道酬勤的 Java 开发问题、中国国学、传统文化和代码爱好者的程序人生,期待你的关注和支持!本人外号:神秘小峯 转载说明:务必注明来源(注明:…

Python-Python高阶技巧:闭包、装饰器、设计模式、多线程、网络编程、正则表达式、递归

版本说明 当前版本号[20231018]。 版本修改说明20231018初版 目录 文章目录 版本说明目录Python高阶技巧闭包简单闭包修改外部函数变量的值实现以下atm取钱的闭包实现了闭包注意事项 装饰器装饰器的一般写法&#xff08;闭包写法&#xff09;装饰器的语法糖写法 设计模式单例…

x86 架构的机载计算机,它来了!

Allspark 2-x86采用Intel酷睿11代或12代CPU&#xff0c;x86架构&#xff0c;适用于无人机等机器人运行SLAM、VIO等复杂逻辑和高精度的机器视觉任务。预装 Ubuntu 22.04或Windows 11&#xff0c;满足多种使用场景。 市面上现有的一些NUC产品&#xff0c;不仅没有针对移动机器人使…

【数据结构】线性表(三)循环链表的各种操作(创建、插入、查找、删除、修改、遍历打印、释放内存空间)

目录 线性表的定义及其基本操作&#xff08;顺序表插入、删除、查找、修改&#xff09; 四、线性表的链接存储结构 1. 单链表 2. 循环链表 a. 循环链表节点结构体 b. 创建新节点 c. 在循环链表末尾插入节点 d. 删除循环链表中指定值的节点 e. 在循环链表中查找指定值的…

Java 中用的是值传递还是引用传递?

值传递&#xff08;Pass by Value&#xff09;和引用传递&#xff08;Pass by Reference&#xff09;是两种参数传递的方式。 值传递是指在调用函数或方法时&#xff0c;将参数的值复制给一个临时变量然后传递给函数或方法。在函数或方法内部&#xff0c;对参数进行修改不会影…

HZOJ-271: 滑动窗口

题目描述 ​ 给出一个长度为 N&#xfffd; 的数组&#xff0c;一个长为 K&#xfffd; 的滑动窗口从最左移动到最右&#xff0c;每次窗口移动&#xff0c;如下图&#xff1a; 找出窗口在各个位置时的极大值和极小值。 输入 ​ 第一行两个数 N,K&#xfffd;,&#xfffd;。 …

linux部署gitlab

1. 配置yum源&#xff1a; vim /etc/yum.repos.d/gitlab-ce.repo [gitlab-ce] nameGitlab CE Repository baseurlhttps://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/ gpgcheck0 enabled1 2. 更新本地缓存 sudo yum install -y gitlab-ce 3. 安装相关依赖 yum …