网络爬虫——urllib(1)

前言

❤️❤️❤️网络爬虫专栏更新中,各位大佬觉得写得不错,支持一下,感谢了!❤️❤️❤️

前篇简单介绍了什么是网络爬虫及相关概念,这篇开始讲解爬虫中的第一个库——urllib。

urllib

urllib是Python标准库中的一个模块,提供了一些用于处理URL的功能。

使用urllib可以进行URL的解析、发送HTTP请求、文件下载等操作。

1、urllib的基本使用

使用urIlib来获取百度首页的源码

# 使用urI1ib来获取百度首页的源码
import urllib.request
# (1)定义一个urI 赢是你要访问的地址
url = 'http://www.baidu.com/'
# (2)模拟浏微器向服务器发达求 response阿应
response = urllib.request.urlopen(url)
# (3)获取响应中的页面的源码 (content 内容意思)
# read方法 返回的是字节形式的二进制数据
content = response.read()
# (4)打印数据
print(content)

 打印结果:

b'\xe7\x99\xbe\xe5\xba\xa6\xe4\xb8\x80\xe4\xb8\x8b\xef\xbc\x8c\xe4\xbd\xa0\xe5\xb0\xb1\xe7\x9f\xa5\xe9
......</code></pre> 
  <p>可以看到开头字母为b,这代表这返回的是字节形式的二进制数据。我们想要看懂它需要将它转换成字符串,也就是解码(二进制->字符串)。</p> 
  <p>源码:源码</p> 
  <p class="img-center"><a href="http://img.e-com-net.com/image/info8/31622b09e8194b6d91512b728fa94f51.jpg" target="_blank"><img alt="网络爬虫——urllib(1)_第1张图片" height="316" src="http://img.e-com-net.com/image/info8/31622b09e8194b6d91512b728fa94f51.jpg" width="650" style="border:1px solid black;"></a></p> 
  <pre><code class="language-python"># 使用urI1ib来获取百度首页的源码
import urllib.request
# (1)定义一个urI 赢是你要访问的地址
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)</code></pre> 
  <p> 打印结果:</p> 
  <p class="img-center"><a href="http://img.e-com-net.com/image/info8/dee19699eadc4d298583ffa094930b4e.jpg" target="_blank"><img alt="网络爬虫——urllib(1)_第2张图片" height="279" src="http://img.e-com-net.com/image/info8/dee19699eadc4d298583ffa094930b4e.jpg" width="650" style="border:1px solid black;"></a></p> 
  <h3>2、一个类型六个方法</h3> 
  <h4>一个类型</h4> 
  <p>为什么要讲一个类型呢?因为后面要讲的一个库叫request库,request库也有相对应的响应,但是它的类型不一样,为了进行一个对比,才进行这样的一个讲解。</p> 
  <pre><code class="language-python">import urllib.request

url = "http://www.baidu.com"
# 模拟浏览器向服务器发送请求
response = urllib.request.urlopen(url)
# 一个类型六个方法
print(type(response))</code></pre> 
  <p>类型打印: </p> 
  <pre><code class="language-python"><class 'http.client.HTTPResponse'></code></pre> 
  <p>从上面我们可以知道response的数据类型是HttpResponse,我们需要去记住。</p> 
  <h4>六个方法</h4> 
  <h5>Ⅰ、read方法</h5> 
  <p>read方法是按照一个字节一个字节的去读</p> 
  <pre><code class="language-python">import urllib.request

url = "http://www.baidu.com"
# 模拟浏览器向服务器发送请求
response = urllib.request.urlopen(url)
# 按照一个字节一个字节的去读
content = response.read()
print(content)
</code></pre> 
  <h5>read方法按字节读</h5> 
  <pre><code class="language-python">import urllib.request

url = "http://www.baidu.com"
# 模拟浏览器向服务器发送请求
response = urllib.request.urlopen(url)
# read方法按字节读
content = response.read(5)
print(content)
</code></pre> 
  <p>打印结果:</p> 
  <pre><code class="language-python">b'<!DOC'</code></pre> 
  <h5>Ⅱ、readline方法按行读</h5> 
  <pre><code class="language-python">import urllib.request

url = "http://www.baidu.com"
# 模拟浏览器向服务器发送请求
response = urllib.request.urlopen(url)
# readline方法按行读
content = response.readline()
print(content)</code></pre> 
  <p>打印结果: </p> 
  <pre><code class="language-python">b'<!DOCTYPE html><!--STATUS OK--><html><head><meta http-equiv="Content-Type" content="text/html;charset=utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta content="always" name="referrer"><meta name="theme-color" content="#ffffff"><meta name="description" content="\xe5\x85\xa8\xe7\x90\x83\xe9\xa2\x86\xe5\x85\x88\xe7\x9a\x84\xe4\xb8\xad\xe6\x96\x87\xe6\x90\x9c\xe7\xb4\xa2\xe5\xbc\x95\xe6\x93\x8e\xe3\x80\x81\xe8\x87\xb4\xe5\x8a\x9b\xe4\xba\x8e\xe8\xae\xa9\xe7\xbd\x91\xe6\xb0\x91\xe6\x9b\xb4\xe4\xbe\xbf\xe6\x8d\xb7\xe5\x9c\xb0\xe8\x8e\xb7\xe5\x8f\x96\xe4\xbf\xa1\xe6\x81\xaf\xef\xbc\x8c\xe6\x89\xbe\xe5\x88\xb0\xe6\x89\x80\xe6\xb1\x82\xe3\x80\x82\xe7\x99\xbe\xe5\xba\xa6\xe8\xb6\x85\xe8\xbf\x87\xe5\x8d\x83\xe4\xba\xbf\xe7\x9a\x84\xe4\xb8\xad\xe6\x96\x87\xe7\xbd\x91\xe9\xa1\xb5\xe6\x95\xb0\xe6\x8d\xae\xe5\xba\x93\xef\xbc\x8c\xe5\x8f\xaf\xe4\xbb\xa5\xe7\x9e\xac\xe9\x97\xb4\xe6\x89\xbe\xe5\x88\xb0\xe7\x9b\xb8\xe5\x85\xb3\xe7\x9a\x84\xe6\x90\x9c\xe7\xb4\xa2\xe7\xbb\x93\xe6\x9e\x9c\xe3\x80\x82"><link rel="shortcut icon" href="https://www.baidu.com/favicon.ico" type="image/x-icon" /><link rel="search" type="application/opensearchdescription+xml" href="/content-search.xml" title="\xe7\x99\xbe\xe5\xba\xa6\xe6\x90\x9c\xe7\xb4\xa2" /><link rel="icon" sizes="any" mask href="https://www.baidu.com/favicon.ico"><link rel="dns-prefetch" href="//dss0.bdstatic.com"/><link rel="dns-prefetch" href="//dss1.bdstatic.com"/><link rel="dns-prefetch" href="//ss1.bdstatic.com"/><link rel="dns-prefetch" href="//sp0.baidu.com"/><link rel="dns-prefetch" href="//sp1.baidu.com"/><link rel="dns-prefetch" href="//sp2.baidu.com"/><link rel="dns-prefetch" href="//pss.bdstatic.com"/><link rel="apple-touch-icon-precomposed" href="https://psstatic.cdn.bcebos.com/video/wiseindex/aa6eef91f8b5b1a33b454c401_1660835115000.png"><title>\xe7\x99\xbe\xe5\xba\xa6\xe4\xb8\x80\xe4\xb8\x8b\xef\xbc\x8c\xe4\xbd\xa0\xe5\xb0\xb1\xe7\x9f\xa5\xe9\x81\x93