Python爬虫(一):http、html、api及request-get的基础知识大杂烩

任务清单

万事开头难。

  • 了解http基础, html基础,
  • 尝试使用request-get爬取豆瓣电影信息,
  • 了解api的使用,

Task01:

  • html等有关知识,
  • api使用,
  • request-get使用

0.前言

第一次用csdn写博客,记录一下。
ps:也是第一次接触爬虫的东西。

1.Http基础、Html基础

从http和html开始讲起,是由于本身爬虫的原理就是从网页出发,我们的数据来源是网页,去提取网页中的有用信息。

而爬虫是指模拟浏览器对目标网站发送请求,然后从网站返回的数据中提取有用的数据,并将有用的数据存放于数据库或文件中。
HTTP是一个基于“请求与响应”模式的、无状态的应用层协议。HTTP协议采用URL作为定位网络资源的标识。

网页是由 HTML 、 CSS 、JavaScript 组成的。

HTML 是用来搭建整个网页的骨架,而 CSS 是为了让整个页面更好看,包括颜色,每个模块的大小、位置等, JavaScript 实现网页的数据动态交互,以及类似于网页上的动画,它一般是由 JavaScript 配合 CSS 来完成的。

打开Chrome浏览器,访问博客站的首页,打开 F12 开发者工具,在选项 Elements 中看到的网页的源代码,展示的就是 HTML 代码。
首先创建一个文本文件,将后缀名改为 .html ,比如demo.html,写入如下内容:

<!DOCTYPE  html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>Demo</title>
    </head>
    <body>
        <div id="container">
            <div class="wrapper">
                <h1>Hello World</h1>
                <div>Hello Python.</div>
            </div>
        </div>
    </body>
</html>

首先,整个文档是以 DOCTYPE 来开头的,这里定义了文档类型是 html ,整个文档最外层的标签是 <html> ,并且结尾还以 </html> 来表示闭和。

这里简单讲一下,浏览器解析 HTML 的时候,并不强制需要每个标签都一定要有闭和标签,但是为了语义明确,最好每个标签都跟上对应的闭和标签。大家可以尝试删除其中的闭和标签进行尝试,并不会影响浏览器的解析。

整个 HTML 文档一般分为 head 和 body 两个部分,在 head 头中,我们一般会指定当前的编码格式为 UTF-8 ,并且使用 title 来定义网页的标题,这个会显示在浏览器的标签上面。

body 中的内容一般为整个 html 文档的正文,html的标签由<h1><h6>六个标签构成,字体由大到小递减,换行标签为<br>,链接使用<a>来创建,href属性包含链接的URL地址,比如<a href="http://www.baidu.com" >一个指向百度的链接

大多数原色的属性以“名称-值”的形式成对出现,由“=”连接并写在开始标签元素名之后。值一般由单引号或双引号包围,有些值的内容包含特定字符,在html中可以去掉引号。不加引号的属性值被认为是不安全的。要注意的是,许多元素存在一些共同的属性:

id 属性为元素提供在全文档内的唯一标识。它用于识别元素,以便样式表可以改变其外观属性,脚本可以改变、显示或删除其内容或格式化。对于添加到页面的url,它为元素提供了一个全局唯一识别,通常为页面的子章节。

class 属性提供了一种将类似元素分类的方式,常被用于语义化或格式化。例如,一个html文档可以指定class="标记"来表明所有具有这一类值得元素都属于文档的主文本。格式化后,这样的元素可能会聚集在一起,并作为页面脚注而不会出现在html代码中。类值也可以多值声明。如class="标记 重要"将元素同时放入“标记”与“重要”两类中。

style 属性可以将表现性质赋予一个特定原色。比起使用id或class属性从样式表中选择元素,“style”被认为是一个更好的做法。

tile 属性用于给元素一个附加的说明。大多数浏览器中这一属性显示为工具提示。

将上面创建的.html文件用浏览器打开,这个页面的显示如下:
在这里插入图片描述
还需要扩展了解的是html的一些常用标签的含义,用到了再补充进来。

2.api的使用

a.What’s API?

b.python爬虫中通常提到的API一般有两种情况:数据API和库的API。

库的API
库的API很好理解,就是一个人写了一个python库,他要找一个地方告诉你库里的每个函数接什么样的参数,一个对象可以调用什么样的方法,这个地方可以称为API。它其实是开发者和使用者之间的一个桥梁,一个接口。

数据API
这种形式的API一般是前端和后端的桥梁。后端计算出结果或者要展示什么数据,就设计一个数据接口(API),前端人员(可以理解成制作网页页面的人)调用这个接口,即可获取数据,将数据展示到页面上。这种API的设计是很有讲究的,设计一个方便易用、易于维护的接口,对前后端工作人员的协作是非常有帮助的。如果用百度搜索“接口设计”,会搜到很多关于接口设计的原则。

这种API一般以URL形式存在,有些API不仅在网站内部使用,而且也向外界提供,我们可以通过访问这些URL来获取数据。

假设一个场景,比如我要做一个app,每天展示知乎上被浏览数量最多的几个回答,再拿一些数据做图表等。这时我需要拿到知乎的数据进行分析再展示。如何拿到数据呢?我可以用爬虫去全网爬,但是这样不仅耗时耗力,而且对知乎服务器会造成比较大的压力。如果知乎给我提供一个API,里面整齐地放着我想要的数据,那么我就可以更方便地获取数据,同时知乎服务器压力也会小很多。如果另一个人也有了一个idea,想做另一个关于知乎的app,他也要获得数据,他也可以用这同一个API。甚至知乎网站上展示的页面中的信息也可以是从API中调用的。所以这样一个数据接口就可以供多方使用,非常方便且多方获益,很多网站都会提供。

通常来说,如果网站提供了API,我们就不要去抓他们的HTML代码了,应该直接接入他们的API获取数据。这样做既减轻了他们的服务器压力,也让我们免去解析他们网页的繁杂工作。

3.request-get的使用

首先是安装requests库,可以在pycharm中安装,也可以Windows+R - > cmd - > pip install requests
输入 import requests -> 进入成功即为ok。

导入requests库后就可以正常使用了,request-get是requests库向目标发出的get请求。

  • 获取网页: r = request.get(url)
  • 状态码:r.status_code,200是访问成功
  • 编码:r.encoding = ‘utf-8’
  • 网页内容: r.text

Requests库有7个主要方法:

Requests库含义
requests.request()构造一个请求
requests.get()获取HTML网页的主要方法
requests.head()获取HTML网页头信息的方法
requests.post()向HTML网页提交POST请求的方法
requests.put()向HTML网页提交PUT请求
requests.patch()向HTML网页提交局部修改请求
requests.delete()向HTML网页提交删除请求

4.用request-get来爬取豆瓣电影top250

未实现待更新。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值