第一个爬虫与测试

一、网络爬虫

  网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫

网络爬虫应用一般分为两个步骤:

  1.  通过网络链接获取网页内容;

  2.  对获得的网页内容进行处理;

这两个步骤分别使用不同的函数库:requests 和 beautifulsoup4 。

采用pip指令安装 requests 库:打开命令行窗口 → 输入cmd → 输入 pip install requests 

( besutifulsoup4 库的安装也是类似的,此处不再赘述)

  •    Requests 库

    1.  Requests 库的7个方法

方法

说明

requests.request()

构造一个请求,支撑以下各方法的基础方法

requests.get()

获取HTML网页的主要方法,对应于HTTP的GET

requests.head()

获取HTML网页头信息的方法,对应于HTTP的HEAD

requests.post()

向HTML网页提交POST请求的方法,对应于HTTP的POST

requests.put()

向HTML网页提交PUT请求的方法,对应于HTTP的PUT

requests.patch()

向HTML网页提交局部修改请求,对应于HTTP的PATCH

requests.delete()

向HTML页面提交删除请求,对应于HTTP的DELETE

 

    2.   Response对象的属性

属性

说明

r.status_code

HTTP请求的返回状态,200表示连接成功,404表示失败

r.text

HTTP响应内容的字符串形式,即,url对应的页面内容

r.encoding

从HTTP header中猜测的响应内容编码方式

r. apparent_encoding

从内容中分析出的响应内容编码方式(备选编码方式)

r.content

HTTP响应内容的二进制形式

    3.  理解 Requests 库的异常

属性

说明

r.status_code

HTTP请求的返回状态,200表示连接成功,404表示失败

r.text

HTTP响应内容的字符串形式,即,url对应的页面内容

r.encoding

从HTTP header中猜测的响应内容编码方式

r. apparent_encoding

从内容中分析出的响应内容编码方式(备选编码方式)

r.content

HTTP响应内容的二进制形式

r.raise_for_status()

如果不是200,产生异常 requests.HTTPError

二、用 requests 库访问百度主页

函数说明:

函数名称 函数功能
requests.get() 获取HTML网页的主要方法,对应于HTTP的GET
r.status_code HTTP请求的返回状态,200表示连接成功,404表示连接失败
r.encoding 从HTTP header中猜测的响应内容编码方式
r.text HTTP响应内容的字符串形式,即,url对应的页面内容
r.content HTTP响应内容的二进制形式
len() 计算文本长度

代码如下:

 1 # -*- coding: utf-8 -*-
 2 """
 3 Created on Mon May 20 10:15:03 2019
 4 
 5 @author: Regan_White_Lin    12
 6 """
 7 
 8 import requests
 9 for i in range(20):
10     print("",i+1,"次访问")
11     r=requests.get("http://www.baidu.com")
12     print("网络状态码:",r.status_code)
13     r.encoding="utf-8"
14     print(r.text)
15     print("text属性长度:",len(r.text))
16     print("content属性长度:",len(r.content))

 

访问结果:

根据要求,循环访问了百度主页20次,由于输出结果过长,此处便不一一展示了。

可以发现的一点是多次访问同一网页,其 text, content 属性长度并未发生变化。

 

三、用 Beautifulsoup4 库提取网页源代码中的有效信息

下面是本次操作所访问的网页源代码:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>菜鸟教程(runoob.com)</title> 
</head>
<body>
         <hl>我的第一个标题</hl>
         <p id="first">我的第一个段落。</p> 
</body>
                  <table border="1">
          <tr>
                  <td>row 1, cell 1</td> 
                  <td>row 1, cell 2</td> 
         </tr>
         <tr>
                  <td>row 2, cell 1</td>
                  <td>row 2, cell 2</td>
         <tr>
</table>
</html>

 

猜你喜欢

转载自www.cnblogs.com/ReganWhite/p/10902260.html