资讯动态

用Python Requests爬数据?14个案例从入门到实战,新手也能看懂

发布时间:2026/9/11 22:20:31 来源:尧图企业网站定制
要去爬取网页的数据, 还要调用 API 的接口, 对此能够堪称“神器”的库是存在的。其特点是一行代码就能够发起请求, 新手也能够快速上手。在今天整理出了 14 个实操案例, 这些案例覆盖了从基础到实战的全方面内容, 代码是直接复制就可以使用的, 所以要赶紧将其收藏起来1. 先装库30秒搞定安装使用之前, 要先保证它在你的电脑当中居住安顿下来。开启调出命令行的视窗界面, 把下面这一排排的代码进行复制, 按下回车键就可以了:pip提示: 假若是提示“pip不是之内命令”的情形下, 要牢记要率先去核查是不是已添加进到环境变量之中哦~2. 最基础的GET请求像浏览器一样“访问网页”比如想看看的API长啥样用GET请求一调就知道# 发送请求相当于在浏览器输入网址 .get(;)# 查看“访问结果”状态码200成功就像电话打通了# 看内容文本格式或JSON格式API接口常用print(文本内容:)print(.text) # 适合看网页源码print(JSON数据:)打印那点 JSON 括号内的内容, 这个操作适宜于剖析接口传送回来的结构规整的数据。对于新手而言必须要看, 这可是构成所有操作的根基所在, 要记好, 只要是.get(网址)这种形式就能够去发送请求啦~3. 带参数的GET请求比如搜“仓库”想在上搜相关的仓库用传参数就像在网页上填搜索框# 定义参数q搜索关键词page页码每页数量 {“q”之处为空字符串, 用于搜索空字符串。page: 1, # 第1页: 10 # 每页10条# 发请求时带上参数不用手动拼网址超方便 .get(;, )# 解析结果看看有多少仓库名字叫啥data .json()print(f找到{data}个仓库)for repo in dataitemsprint(reponame, repo) # 输出仓库名和链接具备实用性的场景为, 去实施爬取那种带有搜索条件的页面, 像豆瓣电影、做电商商品搜索时所涉及的状况, 均能够运用这一方法~4. POST请求提交表单数据比如模拟登录在登录网站之际, 以及提交表单之时, 常常会运用POST请求。举例来说, 针对某一试用接口去发表单数据:# 表单数据就像在网页上填用户名和密码data {: ,: # 发POST请求把数据“递”给服务器 .post(;, datadata)# 看看服务器收到了啥测试接口会原封不动返回数据print(.json())关键的区别在于, GET所代表的含义是“拿数据”, 而POST所代表的含义则是“发数据”, 此外, 登录以及注册这些行为基本上都采用POST~5. POST发JSON数据给接口传结构化信息若接口规定要以JSON这种格式去传递数据, 现今好多API皆是如此一番状况, 那么直接采用json参数会显得更为便利:# JSON数据比如用户信息 {name: 张三,age: 25,city: 上海# 直接传json参数不用手动转格式 .post(;, json)# 服务器返回的内容里就能看到我们发的JSONprint(.json())一小点诀窍, 采用json要比datajson.dumps()更为简便, 能够少写一行代码呦~6. 设置请求头假装自己是“浏览器”有些网站, 会对”程序“所发出的请求予以拒绝, 在这样的时候, 添加一个请求头, 以此告知服务器, ”我是浏览器“。 {进行假装, 使其成为浏览器, 任意搜寻一个User-Agent填入其中就可以了。‘User - Agent’, 为‘/5.0 ( NT 10.0; Win64; x64) /91.0.4472.124’。要是存在登录需求, 在此处能够放置令牌, 比如说那种形式如“: 你的令牌”这般的东西。# 带着头信息发请求 .get(;, )如果你在进行这样的操作时 出现了200 那就意味着成功 要是出现403 那就有可能是被拒绝了, 考虑换个User-Agent再试试 此时打印输出的是点 这一情况。避坑点爬网页时遇到403错误先检查是不是没加请求头~7. 处理超时别让程序“卡”死倘若网站有半天未能呈现反应, 程序届时会始终处于等待状态么? 添加一个超时所需的时间, 一旦超过此时间便予以“放弃”:try:# 设置3秒超时3秒内没反应就报错 .get(;, 3)print(.)..:print(超时啦这个网站太慢了~)as e:print(f其他错误{e})必加参数写爬虫一定要加不然程序可能无限等待~8. 下载图片/文件把网上的资源存到本地看到好看的图片想下载用轻松搞定还能断点续传# 比如下载的logourl ;# 用True边下载边存适合大文件 .get(url, True)if . 200:开启文件, 运用二进制进行写入操作, 其中图片、视频均采用wb。以二进制可写模式, 即使用 wb, 打开名为 -logo.png 的文件, 将其作为文件对象 f 来处理。# 每次读1024字节1KB一点一点存for chunk in .(1024):f.write(chunk)print(下载完成图片在当前文件夹里~)else:print(下载失败可能链接错了)扩展把url换成视频、文档链接就能下载其他文件~9. 用保持登录状态模拟“登录后操作”会存在这样一些网站, 其内容需登录之后方可查看, 像个人中心组的某些内容便是如此, 并且该网站具备能够记住登录状态的功能。# 创建一个对象相当于一个浏览器窗口会记住 .()# 第一步登录比如用POST提交账号密码你的内容似乎是一段代码相关且不是规范的中文表述, 确实不好按照要求进行有意义的改写, 可以提供更合适的中文句子让我来进行改写操作。.post(;, data) # 模拟登录# 第二步访问需要登录的页面会自动带登录信息 .get(;)print(当前的)打印点JSON括号, 能看到登录之后的, 表明保持状态达成成功。场景爬需要登录的网站比如论坛、个人博客必须用~10. 处理重定向跟着网站“跳”访问某些网址时, 其会发生自动跳转至另外一个页面的情况, 举例说明, 像是htpp跳转至https这种情况, 并且默认状态下是会跟随进行跳转的。# 这个网址会自动跳1次 .get(;)打印, 输出“最终状态码: ”。, 停顿# 200此为跳完之后所得到的结果。打印“跳转历史: ”, ., # 此操作能够看见是从哪一个网址跳转而来的。# 如果不想让它跳False .get(;, False)打印不跳转的状态码: , # 302表明要跳转。小知识状态码301永久跳转302临时跳转~11. 处理认证访问需要账号密码的接口有些API, 其访问需要输入账号密码才行, 像公司内部那些接口就是如此, 通过auth参数来将此问题解决:# 比如这个测试接口账号user密码url ;# 直接传(账号, 密码)就行不用手动处理加密等价于.get(, url, 的认证为用户名是user, 密码为空)(。)。打印点, # 二百等于认证成功, 四百零一等于账号密码错了。print(.json()) # 成功的话会返回信息12. 异常处理让程序更“抗造”写代码时难免出错用try-捕获错误程序不会直接崩溃from . , ,try: .get(;) # 这个接口会返回404.() # 主动抛出错误4xx/5xx状态码会报错as e:print(f网页发生错误: {e}举例来说, 404意味着页面不存在, 500表示服务器崩溃了.)。:print(连不上网站可能网址错了或没网~):print(超时了网站没反应~)as e:print(f其他意外{e})else:# 没出错的话就处理数据print(请求成功内容, .text)好习惯, 正式写代码时, 必须加上对异常情况的应对处理否则只因一点微小的错误, 就会导致之前所做的全部努力白费, 化为乌有~13. 使用代理换个“身份”访问有些网站, 会对频繁访问加以限制, 借助代理, 能够更换一个IP, 进而继续进行爬取操作, 请注意要合法使用呀:# 代理地址这里是示例实际需要找可用的代理 {那里出现指代的“http”, 其对应的内容是“http://代理IP:端口”。“https”, 其对应的是“http://代理给出之IP:按照规定划分的位置数量”。try:# 用代理访问看看对外显示的IP .get(;, )print(当前显示的IP, .json())..:print(代理用不了换一个试试~)提示一下, 免费的代理存在不稳定的境况, 对于重要的场景而言, 推荐使用付费后的代理, 并且要遵循网站所制定的规则哦~14. 实战查天气调用公开API直至末尾呈现一个具备实用性的: 借由天气应用程序编程接口选取任意地域的气象温度, 将代码予以修改便能够查询你所处居所的天气状况~def (city, ):# 天气API的地址这里用的是需要自己注册拿 {‘q’: 城市, # 城市的名称, 像是“北京”“”中的那种城市名。appid: , # 换成你自己的“单位”: “”, 温度的单位, 其中摄氏度, 默认情况下是开尔文。try: .get(, ).() # 检查是否出错 .json()# 提取有用的信息print(f\n{city}的天气)print(f温度{maintemp}°C)print(f状况{}比如晴、多云)print(f湿度{main}%)print(f风速{windspeed}米/秒)as e:打印格式化输出查不了: {e}可能错了, 或城市名不对。# 用法换成你自己的去官网注册免费获取 你的(北京, ) # 查北京的天气以双引号为空, 括号内为空的形式, 查询名叫广州的城市, 其天气状况, 英文表达也可以的做法来进行。动手试试注册API时记得选免费套餐足够个人用了~那些案例所覆盖的, 是百分之九十的常用场景, 新手能够从“基础GET”开始练起, 接着练“带参数请求”随后逐步尝试实战案例。要记住: 去爬取数据的时候, 务必要遵循网站的.txt规则, 千万别进行频繁请求, 添加一个时间间隔time.sleep(1), 一定要合法合规, 这是最为重要的~#基础##每天学#​#打卡#​#从今天起记录我的202#​

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价