爬虫入门第一课

什么叫爬虫?

  1. spider

    ​ 爬虫的单词是spider,spider是什么意思呢?spider man,这是蜘蛛侠的意思,spider 就是蜘蛛的意思,爬虫就是蜘蛛,为什么叫蜘蛛呢?大家想蜘蛛一般在蜘蛛网上吧,蜘蛛会在网上爬来爬去,还会在网上搜寻猎物,是不是感觉很形象,爬虫的任务就是在网上搜索东西,蜘蛛就像你的爬虫程序,蜘蛛网就像互联网,猎物是什么?数据!是不是豁然开朗,根据英文学东西会更快。

  2. 爬虫就是从网上爬数据

    ​ 现在人工智能,大数据离我们越来越近,很多公司在开展相关的业务,但是人工智能和大数据中有一个东西非常重要,那就是数据,但是数据从哪里来呢?其中一条途径就是通过爬虫获取

  3. 爬虫就是模拟客户端发送网络请求,接收请求响应,然后抓取响应的数据,原则上,只要是浏览器(客户端)能做的事情,爬虫都能够做

第一个简单的爬虫程序

我们先来通过一个简单的爬虫程序来熟悉爬虫的流程

# import关键字导入模块 导入模块后可以使用该模块里的属性和方法
import requests
# print(dir(requests))  # dir:查看对象的属性和方法
# requests模块的作用  :发送网络请求,返回响应数据

url = "http://www.baidu.com"  # 这是一个url,直接拷贝过来

# headers:参数是HTTP协议的请求头部,这里面的内容会构造成http请求头
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36"

}
# User-Agent:用户代理,让请求服务器知道用户用什么浏览器请求它,在什么平台上请求它,为了模拟的更像人类行为,我们会在爬虫里面添加这一个字段;浏览器根据这个字段返回不同的内容(比如手机和电脑)

response = requests.get(url, headers=headers)
# get方法:向url对应的服务器发送一个get请求,返回的是一个响应对象,
# print(response)


response = response.text
# 对响应内容进行解码
# 获取网页源码的通用方法
# response.content.decode() 
# response.content.decode("GBK")
# response.text  
# 以上三种方法从前往后尝试,能够100%的解决所有网页解码的问题
# response.text :返回的是 bytes 型的二进制数据 
# response.content :返回的是一个 unicode 型的文本数据 

print(response)

简单的爬虫流程

构造http请求信息-->发送请求获取响应-->解析响应提取数据-->对数据进行存储

构造http请求

http:超文本传输协议,浏览器和服务器之间传递数据的协议

协议:事先约定好的规定,你浏览器和服务器传输数据就要遵循着讯这个规定,如果你不这样做,那么会导致什么后果呢?

http格式:

  • 请求格式:请求行、请求头、请求体,但是并不是所有的http请求都有请求体,get没有请求体
  • 响应格式:响应行、响应头、响应体

requests模块会自动帮我们构造http请求,只要我们给出指定的参数既可

发送请求获取响应

注意:

​ 我请求的是www.baidu.com,但是浏览器他还请求了很多东西

​ 浏览器会主动请求js,css等内容,js会修改页面的内容,js也可以重新发送请求,最后浏览器渲染出来的内容在elements中,其中包含css,图片,js,url地址对应的响应等。

​ 但是在爬虫中,爬虫只会请求我们写的url地址(也就是第一个),对应的拿到url地址对应的响应

​ 浏览器渲染出来的页面和爬虫请求的页面并不一样

​ 所以在爬虫中,需要以url地址对应的响应为准来进行数据的提取

我们这个爬虫就是模拟浏览器发送请求获取响应

解析响应提取数据

响应的数据很多,而且需要解析,解析后,我们可以提取我们想要的数据

对数据进行存储

拿到了数据我们就进行保存,以便下次再用,下次怎么用就不管了

那么接下来我们开始一个简单的爬虫程序

根据前面的流程,接下来来一个复杂一点的

爬百度图标

import requests

# 构造http请求信息,提供get()需要的参数,requests自动帮我们构造http请求
# url在network里面找
url = "https://www.baidu.com/img/dong_28db0e2033ff1faf14771bc40ad0a9cd.gif"

# 每个爬虫程序都需要填的,否则对方服务器不知道你是谁
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36"
}

# 发送请求,获取响应(请求方式是get)
response = requests.get(url, headers=headers)

# 解析响应,提取数据
response = response.content

# 保存数据
with open('children.gif', 'wb') as f:
    f.write(response)
    print("OK")

转载于:https://my.oschina.net/u/4142063/blog/3057819

猜你喜欢

转载自blog.csdn.net/weixin_34221773/article/details/92428151
今日推荐