Python爬虫的基本原理是什么?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1250个文字,预计阅读时间需要5分钟。
1、爬虫是什么?爬虫是模拟用户在浏览器或应用上操作,实现操作过程、实现自动化的程序。
2、当我们在浏览器中输入一个url后回车,后台会发生什么?例如输入http://www.sina.com后,后台会进行域名解析、建立连接、发送请求、接收响应、解析响应等一系列操作。
1、爬虫是什么
爬虫是模拟用户在浏览器或者某个应用上的操作,把操作的过程、实现自动化的程序。
当我们在浏览器中输入一个url后回车,后台会发生什么?比如说输入www.sina.com.cn/
发生四个步骤:
- 查找域名对应的IP地址。
- 向IP对应的服务器发送请求。
- 服务器响应请求,发回网页内容。
- 浏览器解析网页内容。
网络爬虫本质就是浏览器localhost.com:8080/index.htm
从中分解出协议名、主机名、端口、对象路径等部分,对于我们的这个地址,解析得到的结果如下:
协议名:www.baidu.com/s?wd=图片。而POST请求的请求参数会存放在Request内,并不会出现在 URL 链接的后面,比如我们登录知乎,输入用户名和密码,我们会看到浏览器开发者工具的Network页,Request请求有FormData的键值对信息,那里就存放了我们的登录信息,有利于保护我们的账户信息安全;
请求URL:URL全称是统一资源定位符,也就是我们说的网址。比如一张图片,一个音乐文件,一个网页文档等都可以用唯一URL来确定,它包含的信息指出文件的位置以及浏览器应该怎么去处理它;
请求头(RequestHeaders):请求头包含请求时的头部信息,如User-Agent(指定浏览器的请求头),Host,Cookies等信息;
请求体:请求体是请求是额外携带的数据,比如登录表单提交的登录信息数据。
3.2 响应
响应状态:有多种响应状态,比如200代表成功,301 跳转页面,404 表示找不到页面,502 表示服务器错误;
响应头(ResponseHeaders):比如内容类型,内容长度,服务器信息,设置Cookie等;
响应体:响应体最主要的部分,包含了请求资源的内容,比如网页 HTML 代码,图片二进制数据等。
简单演示
import requests# 导入requests库,需要安装# 模拟成浏览器访问的头headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'}resp = requests.get('www.baidu.com', headers=headers)print(resp.text)# 打印出网页源代码print(resp.status_code)# 打印出状态码运行成功后可以看到打印出来的 html 源代码和 200 状态码了。这就基本上实现了爬虫的Request和Response的过程。
3.3 解析内容
能抓到什么样的内容?
- 网页文本:如 HTML 文档,Ajax加载的Json格式文本等;
- 图片,视频等:获取到的是二进制文件,保存为图片或视频格式;
- 其他只要能请求到的,都能获取。
解析方式有哪些?
- 直接处理,比如简单的页面文档,只要去除一些空格的数据;
- Json解析,处理Ajax加载的页面;
- 正则表达式;
- BeautifulSoup库;
- PyQuery;
- XPath。
3.4 保存数据
解析内容后,根据自己的需求保存对应的数据或者进行数据加工处理,保存图片、pandas处理、写入csv等。
4、python爬虫提取王者荣耀皮肤
原理同前期文章,下面直接给出代码
import osimport requestsurl = 'pvp.qq.com/web201605/js/herolist.json'herolist = requests.get(url) # 获取英雄列表json文件
herolist_json = herolist.json() # 转化为json格式hero_name = list(map(lambda x: x['cname'], herolist.json())) # 提取英雄的名字hero_number = list(map(lambda x: x['ename'], herolist.json())) # 提取英雄的编号hero_skin_number = []for i in herolist.json(): try: hero_skin_number.append(len(i['skin_name'].split("|"))) except KeyError: hero_skin_number.append(1)
# 下载图片def downloadPic(): i = 0 for j in hero_number: # 创建文件夹 os.mkdir("./" + hero_name[i]) # 进入创建好的文件夹 os.chdir("./" + hero_name[i]) i += 1 for k in range(1, hero_skin_number[i - 1] + 1): # 拼接url onehero_link = 'game.gtimg.cn/images/yxzj/img201606/skin/hero-info/' + str(j) + '/' + str( j) + '-bigskin-' + str(k) + '.jpg' print(onehero_link) im = requests.get(onehero_link) # 请求url if im.status_code == 200: open(str(k) + '.jpg', 'wb').write(im.content) # 写入文件 os.chdir("../")
downloadPic()
往期文章参考:
12.奇怪知识(1) --Matlab爬虫获取王者荣耀英雄皮肤
本文共计1250个文字,预计阅读时间需要5分钟。
1、爬虫是什么?爬虫是模拟用户在浏览器或应用上操作,实现操作过程、实现自动化的程序。
2、当我们在浏览器中输入一个url后回车,后台会发生什么?例如输入http://www.sina.com后,后台会进行域名解析、建立连接、发送请求、接收响应、解析响应等一系列操作。
1、爬虫是什么
爬虫是模拟用户在浏览器或者某个应用上的操作,把操作的过程、实现自动化的程序。
当我们在浏览器中输入一个url后回车,后台会发生什么?比如说输入www.sina.com.cn/
发生四个步骤:
- 查找域名对应的IP地址。
- 向IP对应的服务器发送请求。
- 服务器响应请求,发回网页内容。
- 浏览器解析网页内容。
网络爬虫本质就是浏览器localhost.com:8080/index.htm
从中分解出协议名、主机名、端口、对象路径等部分,对于我们的这个地址,解析得到的结果如下:
协议名:www.baidu.com/s?wd=图片。而POST请求的请求参数会存放在Request内,并不会出现在 URL 链接的后面,比如我们登录知乎,输入用户名和密码,我们会看到浏览器开发者工具的Network页,Request请求有FormData的键值对信息,那里就存放了我们的登录信息,有利于保护我们的账户信息安全;
请求URL:URL全称是统一资源定位符,也就是我们说的网址。比如一张图片,一个音乐文件,一个网页文档等都可以用唯一URL来确定,它包含的信息指出文件的位置以及浏览器应该怎么去处理它;
请求头(RequestHeaders):请求头包含请求时的头部信息,如User-Agent(指定浏览器的请求头),Host,Cookies等信息;
请求体:请求体是请求是额外携带的数据,比如登录表单提交的登录信息数据。
3.2 响应
响应状态:有多种响应状态,比如200代表成功,301 跳转页面,404 表示找不到页面,502 表示服务器错误;
响应头(ResponseHeaders):比如内容类型,内容长度,服务器信息,设置Cookie等;
响应体:响应体最主要的部分,包含了请求资源的内容,比如网页 HTML 代码,图片二进制数据等。
简单演示
import requests# 导入requests库,需要安装# 模拟成浏览器访问的头headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'}resp = requests.get('www.baidu.com', headers=headers)print(resp.text)# 打印出网页源代码print(resp.status_code)# 打印出状态码运行成功后可以看到打印出来的 html 源代码和 200 状态码了。这就基本上实现了爬虫的Request和Response的过程。
3.3 解析内容
能抓到什么样的内容?
- 网页文本:如 HTML 文档,Ajax加载的Json格式文本等;
- 图片,视频等:获取到的是二进制文件,保存为图片或视频格式;
- 其他只要能请求到的,都能获取。
解析方式有哪些?
- 直接处理,比如简单的页面文档,只要去除一些空格的数据;
- Json解析,处理Ajax加载的页面;
- 正则表达式;
- BeautifulSoup库;
- PyQuery;
- XPath。
3.4 保存数据
解析内容后,根据自己的需求保存对应的数据或者进行数据加工处理,保存图片、pandas处理、写入csv等。
4、python爬虫提取王者荣耀皮肤
原理同前期文章,下面直接给出代码
import osimport requestsurl = 'pvp.qq.com/web201605/js/herolist.json'herolist = requests.get(url) # 获取英雄列表json文件
herolist_json = herolist.json() # 转化为json格式hero_name = list(map(lambda x: x['cname'], herolist.json())) # 提取英雄的名字hero_number = list(map(lambda x: x['ename'], herolist.json())) # 提取英雄的编号hero_skin_number = []for i in herolist.json(): try: hero_skin_number.append(len(i['skin_name'].split("|"))) except KeyError: hero_skin_number.append(1)
# 下载图片def downloadPic(): i = 0 for j in hero_number: # 创建文件夹 os.mkdir("./" + hero_name[i]) # 进入创建好的文件夹 os.chdir("./" + hero_name[i]) i += 1 for k in range(1, hero_skin_number[i - 1] + 1): # 拼接url onehero_link = 'game.gtimg.cn/images/yxzj/img201606/skin/hero-info/' + str(j) + '/' + str( j) + '-bigskin-' + str(k) + '.jpg' print(onehero_link) im = requests.get(onehero_link) # 请求url if im.status_code == 200: open(str(k) + '.jpg', 'wb').write(im.content) # 写入文件 os.chdir("../")
downloadPic()
往期文章参考:
12.奇怪知识(1) --Matlab爬虫获取王者荣耀英雄皮肤

