编程小白的自学笔记九(python爬虫入门+代码详解)

这篇具有很好参考价值的文章主要介绍了编程小白的自学笔记九(python爬虫入门+代码详解)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

系列文章目录

编程小白的自学笔记八(python中的多线程)

编程小白的自学笔记七(python中类的继承) 

 编程小白的自学笔记六(python中类的静态方法和动态方法) 

编程小白的自学笔记五(Python类的方法) 

编程小白的自学笔记四(正则表达式模块search函数) 


目录

  • 系列文章目录

    前言

    一、使用get方法请求数据

    二、爬取酷狗音乐排行榜

    总结


前言

很多小白都是听说python可以很好的编写爬虫脚本慕名而来,我也是,终于学到爬虫部分了,前面的html语言,客户端和服务器的交互等基础就不赘述了,直接进入主题。


一、使用get方法请求数据

开发网络爬虫需要第三方模块requests,我们需要安装,语法如下:

Pip install requests

安装完成后,使用其中的get方法就可以返回结果,其功能等同于我们在浏览器输入网址,然后服务器返回一个页面给我们一样 。

requests库的get方法是用于向服务器发送GET请求的。它的完整参数如下:

  • url:请求的URL地址。
  • params:查询字符串,用于传递参数。
  • headers:请求头信息。
  • cookies:Cookie信息。
  • proxies:代理服务器地址。
  • timeout:超时时间。
  • verify:是否验证SSL证书。

 下面我们看一个小例子:

import requests
url = 'http://www.baidu.com'
try:
    req = requests.get(url)
    print(req.text)
except:
print('查询失败')

代码还是很简单的,返回的结果是:

<!DOCTYPE html>

<!--STATUS OK--><html> <head><meta http-equiv=content-type content=text/html;charset=utf-8><meta http-equiv=X-UA-Compatible content=IE=Edge><meta content=always name=referrer><link rel=stylesheet type=text/css href=http://s1.bdstatic.com/r/www/cache/bdorz/baidu.min.css><img src=//www.baidu.com/img/gs.gif> </p> </div> </div> </div> </body> </html>

返回的内容比较多,我删除了中间的一些代码,这个就是网站的源码。我可以看出,只要给get方法传递一个url地址就行。 

二、爬取酷狗音乐排行榜

下面就进入真正的实战了,爬取酷狗音乐排行榜数据,网址是酷狗TOP500_排行榜_乐库频道_酷狗网,可以看到网页上对歌曲进行了排名。

编程小白的自学笔记九(python爬虫入门+代码详解),编程小白自学笔记,笔记,python,爬虫,正则表达式,数据挖掘 

我们右击鼠标打开检查选项,可以找到歌曲信息在Html中的位置,可以看出歌曲名称和演唱者都在<li>元素的title属性中,如果我们通过get方法获取了网页的全部内容,就可以使用正则表达式提取出我们需要的信息。

 编程小白的自学笔记九(python爬虫入门+代码详解),编程小白自学笔记,笔记,python,爬虫,正则表达式,数据挖掘

下面是实战代码

import requests
import re
url = 'https://www.kugou.com/yy/rank/home/1-8888.html'
try:
    req = requests.get(url)
    songs = re.findall(r'<li.*?title="(.*?)".*?>',req.text)
    for song in songs:
        print(song)
except:
    print('查询失败')

 程序运行成功,但不是我们想要的结果,返回的是空,也就是说没有匹配到结果,为此,我增加了代码print(req.text),看看我们获取到的返回结果是什么。

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<meta http-equiv="X-UA-Compatible" content="IE=edge">

<meta name="viewport" content="width=device-width, initial-scale=1">

<title>403 Forbidden</title>

<style type="text/css">body{margin:5% auto 0 auto;padding:0 18px}.P{margin:0 22%}.O{margin-top:20px}.N{margin-top:10px}.M{margin:10px 0 30px 0}.L{margin-bottom:60px}.K{font-size:25px;color:#F90}.J{font-size:14px}.I{font-size:20px}.H{font-size:18px}.G{font-size:16px}.F{width:230px;float:left}.E{margin-top:5px}.D{margin:8px 0 0 -20px}.C{color:#3CF;cursor:pointer}.B{color:#909090;margin-top:15px}.A{line-height:30px}.hide_me{display:none}</style>

</head>

<body>

<div id="p" class="P">

<div class="K">403</div>

<div class="O I">Forbidden</div>

<p class="J A L">Error Times: Fri, 23 Jun 2023 06:40:43 GMT

<br>

<span class="F">IP: 60.174.21.124</span>Node information: CS-000-01uyG161

<br>URL: https://www.kugou.com/yy/rank/home/1-8888.html

<br>Request-Id: 64953e6b_CS-000-01uyG161_35678-151

<br>

<br>Check:

<span class="C G" onclick="s(0)">Details</span></p>

</div>

<div id="d" class="hide_me P H">

<div class="K">ERROR</div>

<p class="O I">The Requested URL could not be retrieved</p>

<div class="O">

<div>While trying to retrieve the URL:</div>

<pre class="B G">https://www.kugou.com/yy/rank/home/1-8888.html</pre></div>

<div class="M">

<span>The following error was encountered:</span>

<ul class="E">

<li class="D G">Invalid Request</li></ul>

</div>

<p class="M">The access control configuration prevents your request at this time.

<p></p>Please contact your service provider if you feel this is incorrect.</p>

<a class="N C" href="#" onclick="s(1)">return</a></div>

<script type="text/javascript">function e(i) {

return document.getElementById(i);

}

function d(i, t) {

e(i).style.display = (t ? 'block': 'none');

}

function s(e) {

d('p', e);

d('d', !e);

}</script>

</body>

</html>

可以看到,并没有歌手和歌曲内容,应该是搜狗网站进行了一些反爬。于是我们在get里面加上headers={'user-agent':'chrome'},来模拟浏览器访问,代码如下: 

import re
url = 'https://www.kugou.com/yy/rank/home/1-8888.html'
try:
    req = requests.get(url,headers={'user-agent':'chrome'})
    # print(req.text)
    songs = re.findall(r'<li.*?title="(.*?)"',req.text)
    for song in songs:
        print(song)
except:
print('查询失败')

这次成功返回我们要的结果:

苏星婕 - 听悲伤的情歌

指尖笑 - 不问ciaga

郭顶 - 凄美地

一只白羊 - 等不到的你

任夏 - 悲伤的爱情

张靓颖、王赫野 - 是你 (Live)

Mae Stephens - If We Ever Broke Up (Explicit)

Kui Kui - 宝贝在干嘛

张紫豪 - 可不可以

周杰伦 - 说好的幸福呢

周杰伦 - 晴天

汪苏泷、吉克隽逸 - Letting Go (Live)

承桓 - 我会等

蔡健雅 - Letting Go

任夏 - 失眠情歌 (Live合唱版)

苏星婕 - 吹着晚风想起你

周杰伦 - 我落泪情绪零碎

云狗蛋 - 天若有情

程响 - 可能

A-Lin - 天若有情

RE-D、是二哈ya、masta - 肯定

G.E.M. 邓紫棋 - 喜欢你

我们来详细分析下:

  1. 用get方法获取网页内容。这个内容和最开始介绍的内容一样,get方法向服务器发送请求,服务器返回数据。
  2. 增加headers参数。我们第一次没有得到想要的结果,是网站增加了限制,目的就是用来验证请求是不是正常浏览器发出的,第一次我们的请求明显被服务器发现不正常了,于是我们增加了headers参数,内容为{'user-agent':'chrome'},意思就是浏览器类型为谷歌浏览器,这下骗过了服务器。
  3. 使用正则匹配我们想要的结果。使用正则我们需要先导入re模块,原始网页内容为<li class=" " title="苏星婕 - 听悲伤的情歌" data-index="0" data-eid="8id4200b">,那么我们只需要匹配以<li开头,内含有title=""的语句就行,那就可以这样写正则表达式<li.*?title="(.*?)",.*?代表除换行以外的其他元素,表达式的返回结果是子表达式的内容,正好是歌手加歌曲。

总结

requests库是一个Python的第三方库,用于发送HTTP请求。它提供了简单易用的API,可以方便地实现各种HTTP请求操作,如GET、POST、PUT、DELETE等。

requests库的主要特点如下:

1. 简单易用:requests库的API设计简洁明了,易于上手使用。
2. 灵活性高:requests库支持多种HTTP请求方法和参数设置,可以根据需要进行灵活配置。
3. 性能优异:requests库采用了高效的HTTP协议解析器和连接池技术,可以提高请求的响应速度和稳定性。
4. 支持多种数据格式:requests库可以处理JSON、XML、HTML等多种数据格式,并提供了丰富的解析器和转换器。
5. 跨平台兼容性好:requests库可以在Windows、Linux、Mac OS等多个操作系统上运行,并且支持Python 2.x和Python 3.x版本。

总之,requests库是一个非常实用的HTTP请求工具,可以帮助开发者快速实现各种网络请求操作。文章来源地址https://www.toymoban.com/news/detail-595472.html

到了这里,关于编程小白的自学笔记九(python爬虫入门+代码详解)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 项目二:学会使用python爬虫请求库(小白入门级)

    上一章已经了解python爬虫的基本知识,这一次让我们一起来学会如何使用python请求库爬取目标网站的信息。当然这次爬虫之旅相信我能给你带来不一样的体验。 目录 一、安装requests 库 简介 安装 步骤 1.requests的基本使用3步骤 2.查看所使用编码 3.设置编码 二、认识requests请求

    2024年04月24日
    浏览(23)
  • python教程 入门学习笔记 第3天 编程基础常识 代码注释 变量与常量

    编程基础常识 一、注释 1、对代码的说明与解释,它不会被编译执行,也不会显示在编译结果中 2、注释分为:单行注释和多行注释 3、用#号开始,例如:#这是我的第一个python程序 4、注释可以写在单独一行,也可以写在一句代码后面 5、不想执行编译,又不能删除的代码,可

    2024年02月14日
    浏览(41)
  • Python教程_编程入门自学教程_菜鸟教程-免费教程分享

    Python - 教程 Python - 概述 Python - 环境设置 Python - 基本语法 Python - 变量类型 Python - 基本运算符 Python - 决策 Python - 循环 Python - 数字 Python - 字符串 Python - 列表 Python - 元组 Python - 字典 Python - 日期和时间 Python - 功能 Python - 模块 Python - 文件I / O. Python - 异常处理 Python - 面向对象

    2024年02月02日
    浏览(36)
  • 小白用chatgpt编写python 爬虫程序代码 抓取网页数据(js动态生成网页元素)

    jS动态生成,由于呈现在网页上的内容是由JS生成而来,我们能够在浏览器上看得到,但是在HTML源码中却发现不了        如果不加,如果网站有防爬技术,比如频繁访问,后面你会发现什么数据都取不到 User-Agent获取地方:  网页获取位置: 使用代理IP解决反爬。(免费代理

    2024年02月01日
    浏览(72)
  • 网络安全(黑客)-小白自学笔记

    想自学网络安全(黑客技术)首先你得了解什么是网络安全!什么是黑客! 网络安全可以基于攻击和防御视角来分类,我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术,而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 无论网络、Web、移动、桌面、

    2024年02月06日
    浏览(31)
  • 网络安全(黑客技术)—小白自学笔记

    网络安全可以基于攻击和防御视角来分类,我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术,而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 一、是市场需求量高; 二、则是发展相对成熟入门比较容易。 需要掌握的知识点偏多(举例): 外围打

    2024年02月08日
    浏览(33)
  • Python 网络爬虫入门详解

    什么是网络爬虫          网络爬虫又称网络蜘蛛,是指按照某种规则在网络上爬取所需内容的脚本程序。众所周知,每个网页通常包含其他网页的入口,网络爬虫则通过一个网址依次进入其他网址获取所需内容。 优先申明:我们使用的python编译环境为PyCharm 一、首先一个网

    2024年01月17日
    浏览(33)
  • Python爬虫学习笔记(一)---Python入门

    pycharm的安装可以自行去搜索教程。 pycharm的使用需要注意: 1、venv文件夹是这个项目的虚拟环境文件,应与代码文件分开。 2、如果运行没有,最后一行是“进程已结束,退出代码为0”,如果最后不是0,那么,就说明运行出错。 print括号中使用单引号或者双引号都是可以的。

    2024年01月17日
    浏览(26)
  • Python从入门到网络爬虫(正则表达详解)

    正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。 Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式。 re 模块使 Python 语言拥有全部的正则表达式功能。  compile 函数根据一个模式字符串和可选的标志参数生成一个正

    2024年01月18日
    浏览(27)
  • Python从入门到网络爬虫(控制语句详解)

    做任何事情都要遵循一定的原则。例如,到图书馆去借书,就需要有借书证,并且借书证不能过期,这两个条件缺一不可。程序设计亦是如此,需要使用流程控制实现与用户的交流,并根据用户需求决定程序“做什么”“怎么做\\\"。 Python的流程控制语句主要可以分为以下几类

    2024年02月02日
    浏览(24)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包