尚硅谷|Python爬虫 urllib -- 爬虫的相关概念介绍、urllib库的基本使用、urllib(1个类型和6个方法)

1. 爬虫的相关概念介绍 1.1 什么是互联网爬虫 尚硅谷|Python爬虫 urllib -- 爬虫的相关概念介绍、urllib库的基本使用、urllib(1个类型和6个方法)
文章图片

如果我们把互联网比作一张大的蜘蛛网,那一台计算机上的数据便是蜘蛛网上的一个猎物,而爬虫程序就是一只蜘蛛,沿着蜘蛛网抓取自己想要的数据

  • 解释1:通过一个程序,根据Url(http://www.taobao.com)进行爬取网页,获取有用信息
  • 解释2:使用程序模拟浏览器,去向服务器发送请求,获取响应信息
1.2 爬虫核心
  • 爬取网页:爬取整个网页 包含了网页中所有得内容
  • 解析数据:将网页中你得到的数据 进行解析
  • 难点:爬虫和反爬虫之间的博弈
1.3 爬虫的用途
  • 数据分析/人工数据集
  • 社交软件冷启动
  • 舆情监控
  • 竞争对手监控
    尚硅谷|Python爬虫 urllib -- 爬虫的相关概念介绍、urllib库的基本使用、urllib(1个类型和6个方法)
    文章图片
1.4 爬虫分类
通用爬虫:
尚硅谷|Python爬虫 urllib -- 爬虫的相关概念介绍、urllib库的基本使用、urllib(1个类型和6个方法)
文章图片

聚焦爬虫:
尚硅谷|Python爬虫 urllib -- 爬虫的相关概念介绍、urllib库的基本使用、urllib(1个类型和6个方法)
文章图片

1.5 反爬手段
1.User‐Agent: User Agent中文名为用户代理,简称 UA,它是一个特殊字符串头,使得服务器能够识 别客户使用的操作系统及版 本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器 语言、浏览器插件等。 2.代理IP: 西次代理 快代理 什么是高匿名、匿名和透明代理?它们有什么区别? 1.使用透明代理,对方服务器可以知道你使用了代理,并且也知道你的真实IP。 2.使用匿名代理,对方服务器可以知道你使用了代理,但不知道你的真实IP。 3.使用高匿名代理,对方服务器不知道你使用了代理,更不知道你的真实IP。 3.验证码访问 打码平台 云打码平台 超级 4.动态加载网页 网站返回的是js数据 并不是网页的真实数据 selenium驱动真实的浏览器发送请求 5.数据加密 分析js代码

2. urllib库的基本使用 尚硅谷|Python爬虫 urllib -- 爬虫的相关概念介绍、urllib库的基本使用、urllib(1个类型和6个方法)
文章图片

爬取百度源码:
# 使用urllib来获取百度首页的源码 import urllib.request# (1)定义一个url就是你要访问的地址 url = 'http://www.baidu.com'# (2)模拟浏览器向服务器发送请求 response响应 response = urllib.request.urlopen(url)# (3)获取响应中的页面的源码content 内容的意思 # read方法返回的是字节形式的二进制数据 # 我们要将二进制的数据转换为字符串 # 二进制--》字符串解码decode('编码的格式') content = response.read().decode('utf-8')# (4)打印数据 print(content)

运行结果:
尚硅谷|Python爬虫 urllib -- 爬虫的相关概念介绍、urllib库的基本使用、urllib(1个类型和6个方法)
文章图片

补充说明:如果不解码会怎么样?
【尚硅谷|Python爬虫 urllib -- 爬虫的相关概念介绍、urllib库的基本使用、urllib(1个类型和6个方法)】尚硅谷|Python爬虫 urllib -- 爬虫的相关概念介绍、urllib库的基本使用、urllib(1个类型和6个方法)
文章图片

3. urllib:1个类型和6个方法 3.1 一个类型:HTTPResponse
import urllib.requesturl = 'http://www.baidu.com'# 模拟浏览器向服务器发送请求 response = urllib.request.urlopen(url)# 一个类型 # response是HTTPResponse的类型 print('response type is ', type(response))

运行结果:
尚硅谷|Python爬虫 urllib -- 爬虫的相关概念介绍、urllib库的基本使用、urllib(1个类型和6个方法)
文章图片

3.2 六个方法
read():按照一个字节一个字节的去读
import urllib.requesturl = 'http://www.baidu.com'# 模拟浏览器向服务器发送请求 response = urllib.request.urlopen(url)# 按照一个字节一个字节的去读 content = response.read() print('response.read() is: ', content)

运行结果:
尚硅谷|Python爬虫 urllib -- 爬虫的相关概念介绍、urllib库的基本使用、urllib(1个类型和6个方法)
文章图片

import urllib.requesturl = 'http://www.baidu.com'# 模拟浏览器向服务器发送请求 response = urllib.request.urlopen(url)# 返回参数个字节 content = response.read(5) print('response.read(5) is: ', content)

运行结果:
尚硅谷|Python爬虫 urllib -- 爬虫的相关概念介绍、urllib库的基本使用、urllib(1个类型和6个方法)
文章图片

readline():读取一行
import urllib.requesturl = 'http://www.baidu.com'# 模拟浏览器向服务器发送请求 response = urllib.request.urlopen(url)# 读取一行 content = response.readline() print('response.readline() is ', content)

运行结果:
尚硅谷|Python爬虫 urllib -- 爬虫的相关概念介绍、urllib库的基本使用、urllib(1个类型和6个方法)
文章图片

readlines():读取所有行
import urllib.requesturl = 'http://www.baidu.com'# 模拟浏览器向服务器发送请求 response = urllib.request.urlopen(url)# 读取所有行 content = response.readlines() print(type(content)) print(content)

运行结果:
尚硅谷|Python爬虫 urllib -- 爬虫的相关概念介绍、urllib库的基本使用、urllib(1个类型和6个方法)
文章图片

getcode(): 返回状态码
import urllib.requesturl = 'http://www.baidu.com'# 模拟浏览器向服务器发送请求 response = urllib.request.urlopen(url)# 返回状态码如果是200了 那么就证明我们的逻辑没有错 print(response.getcode())

运行结果:
尚硅谷|Python爬虫 urllib -- 爬虫的相关概念介绍、urllib库的基本使用、urllib(1个类型和6个方法)
文章图片

geturl(): 返回的是url地址
import urllib.requesturl = 'http://www.baidu.com'# 模拟浏览器向服务器发送请求 response = urllib.request.urlopen(url)# 返回的是url地址 print(response.geturl())

运行结果:
尚硅谷|Python爬虫 urllib -- 爬虫的相关概念介绍、urllib库的基本使用、urllib(1个类型和6个方法)
文章图片

获取请求头信息:
import urllib.requesturl = 'http://www.baidu.com'# 模拟浏览器向服务器发送请求 response = urllib.request.urlopen(url)# 获取是一个状态信息 print(response.getheaders())

运行结果:
尚硅谷|Python爬虫 urllib -- 爬虫的相关概念介绍、urllib库的基本使用、urllib(1个类型和6个方法)
文章图片

    推荐阅读