第一个爬虫和测试

news/2024/7/19 10:50:14 标签: 爬虫, json, 运维

一、什么是网络爬虫

  信息时代,每天我们都在上网,每天我们都在浏览器上访问网站,我们打开一个网页,接着又跳转到另一个网页,看到喜欢的内容,或者是一段幽默的句子,或者是一张美女的图片,我们会选择将其保存下来,当数量很多的时候,我们就会选择用程序来实现这样一个过程,实现自动浏览网页,自动根据我们的要求,保存我们想要的数据。于是,爬虫就应运而生了。所以,简单来说,爬虫就是实现网页自动浏览,数据自动保存,根据我们的需要进行自动化浏览器的操作或者自动化测试的这样一种程序。至于为啥要叫爬虫,因为互联网是一张很大的“蜘蛛网",爬虫就好像是一只蜘蛛在网上爬来爬去。当然,这些完全是我自己的理解,你当作是一段文字来看,并非严谨的定义,爬虫的范畴,越来越大!

二、需要哪些知识来写爬虫

  1.Http协议:简单而言,就是客户端向服务器发出一条Http请求,服务器收到请求之后会返回一些数据给客户端,然后客户端再对这些数据进行解析和处理。

  2.Html:网页的编写,超文本标记语言,要求能看懂一些网页源代码

  3.正则表达式:完整的字符串规则,查找、替换等

三、首先 Requests 库基本方法介绍

方法 说明
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
其对象属性 说明
r.states_code 获取返回的状态码
r.text / r.read() HTTP响应内容文本形式返回
r.content HTTP响应内容的二进制形式
r.json() HTTP响应内容的json形式
r.raw HTTP响应内容的原始形式
r.encoding 返回请求的url
r.encoding 从HTTP header中猜测的响应内容编码方式
r.apparent_encoding 从内容中分析出的响应内容编码方式(备选编码方式)
r.apparent_encoding 从内容中分析出的响应内容编码方式(备选编码方式)
四、异常

Requests显式抛出的异常都继承自requests.exceptions.RequestExceptio异常 说明

requests.ConnectionError 网络连接错误异常,如DNS查询失败、拒绝连接等
requests.HTTPError HTTP错误异常
requests.URLRequired URL缺失异常
requests.TooManyRedirects 超过最大重定向次数,产生重定向异常
requests.ConnectTimeout 连接远程服务器超时异常
requests.Timeout 请求URL超时,产生超时异常

五、爬虫的过程

1、向服务器提出请求,request,服务器响应回复,response对得到的响应进行解析,这些响应可能是HTML,可用正则表达式对其解析,也可能是json对象,也有可能是二 进 制数据,这是可以保存本地进一步处理。
2,对提出去来的数据进行结构化存储。网页比较简单时直接处理,jison结构化的数据用正则表达式提取出来,另外原生的html网页只包含源代码,可能并不包含一些数据,这些数据是通过后期JS接口调用之后拿到的
六、输入代码

# -*- coding: utf-8 -*-
"""
Created on Wed May 22 16:08:18 2019

@author: admin
"""

import requests
for i in range(20):
    print("第",i+1,"次访问")
    r=requests.get("http://www.google.com.hk")
    print("网络状态码:",r.status_code)
    r.encoding="utf-8"
    print(r.text)
    print("text属性长度:",len(r.text))
    print("content属性长度:",len(r.content))

 七、运行结果 

 

可以看到,谷歌爬虫不了

这样就结束了哦!

转载于:https://www.cnblogs.com/ysd973/p/10906678.html


http://www.niftyadmin.cn/n/510832.html

相关文章

4g 控矿驱动 迪兰rx574_迪兰RX 570 4G X-Serial显卡驱动官方正式版下载,适用于win8,win7,win10-驱动精灵...

驱动说明:图形芯片Radeon RX570流处理器数量2048显存容量4GB GDDR5核心频率1244/1270MHz显存频率7000MHz显存位宽256-bitDirectX12总线接口PCIE 3.0输出接口DL-DVI-D/HDMI/3DisplayPort特点支持OpenGLAMD CrossFireX™多GPU技术支持AMD加速并行处理 (APP) 技术AMD E…

CentOS7.2环境下安装Nginx

目录 1、下载安装包2、安装nginx3、配置nginx开机启动4、测试1、下载安装包 官网下载 wget http://nginx.org/download/nginx-1.16.0.tar.gz 2、安装nginx 2.1、安装依赖库 先执行以下命令,安装nginx依赖库,如果缺少依赖库,可能会安装失败。 yum install…

canvas的自适应问题

在vue项目中用了canvas的画圆,想要设置canvas自适应,后来了解到canvas不能够自适应,只能通过resize在屏幕宽度改变时去改变大小 var myCanvas document.createElement("canvas"); myCanvas.setAttribute("width", scre…

Javascript的最大回文字符串

这个是一个典型的动态规划的问题,在做这道题之前最好还是学习理解一下什么是动态规划 var longestPalindrome function(s) {if(!s || s.length 0) return ""let res s[0]const dp []// 遍历简化的操作,原因是dp[i][...]依赖于dp[i 1][..…

photon四种同步方式_Unity - Photon PUN 本地与网络同步的逻辑分离 (二)

private static Dictionary EvnDic new Dictionary(); //保存所有函数方法的字典public static List CommandTypeList new List();//注册监听____________________________________public static void Listen(CommandType command, CallFunction call) //通过传递参数枚举 和…

as end of today

最近甚是无趣,做什么都一副兴致缺缺的样子, 不过终归是开通博客的第一天,太丧还是不大好 也许应该重拾心情,审视自己, 毕竟自己还是有喜欢的东西呀 不要让梦想成为臆想 转载于:https://www.cnblogs.com/ys1s/p/1090859…

Javascript中的大数相加

js存放整数的时候有一个安全范围,一旦数字超过这个范围便会损失精度。 我们不能用拿精度损失的数字进行运行,因为运算结果一样是会损失精度。 我们用字符串来表示数据,这样就不会丢失精度。 JS中整数的最大安全范围是:90071992547…

exponent modulus 根据_如何根据RSA的公共指数和模数生成DER / PEM证书?

As we know, a public key consists of a public exponent and a modulus.My questions is:How to generate a DER/PEM certificate from public exponent and modulus of RSA?Thank you very much in advance.解决方案With a public exponent and modulus the best…