# 一、request 库

Requests 是一个常用的 HTTP 请求库,可以方便地向网站发送 HTTP 请求,并获取响应结果。这是官方的文档:request 官方文档(官方文档不太容易看懂😹)可以选择菜鸟教程里面的 requests 库讲解菜鸟教程

属性或方法 说明
apparent_encoding 编码方式
close() 关闭与服务器的连接
content 返回响应的内容,以字节为单位
cookies 返回一个 CookieJar 对象,包含了从服务器发回的 cookie
elapsed 返回一个 timedelta 对象,包含了从发送请求到响应到达之间经过的时间量,可以用于测试响应速度。比如 r.elapsed.microseconds 表示响应到达需要多少微秒。
encoding 解码 r.text 的编码方式
headers 返回响应头,字典格式
history 返回包含请求历史的响应对象列表(url)
is_permanent_redirect 如果响应是永久重定向的 url,则返回 True,否则返回 False
is_redirect 如果响应被重定向,则返回 True,否则返回 False
iter_content() 迭代响应
iter_lines() 迭代响应的行
json() 返回结果的 JSON 对象 (结果需要以 JSON 格式编写的,否则会引发错误)
links 返回响应的解析头链接
next 返回重定向链中下一个请求的 PreparedRequest 对象
ok 检查 “status_code” 的值,如果小于 400,则返回 True,如果不小于 400,则返回 False
raise_for_status() 如果发生错误,方法返回一个 HTTPError 对象
reason 响应状态的描述,比如 “Not Found” 或 “OK”
request 返回请求此响应的请求对象
status_code 返回 http 的状态码,比如 404 和 200(200 是 OK,404 是 Not Found)
text 返回响应的内容,unicode 类型数据
url 返回响应的 URL

# 二、Beautiful soup 库

Beautiful Soup 是一个可以从 HTML 或 XML 文件中提取数据的 Python 库。它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.Beautiful Soup 会帮你节省数小时甚至数天的工作时间.

下表列出了主要的解析器,以及它们的优缺点:

解析器 使用方法 优势 劣势
Python 标准库 BeautifulSoup(markup, "html.parser") Python 的内置标准库执行速度适中文档容错能力强 Python 2.7.3 or 3.2.2) 前 的版本中文档容错能力差
lxml HTML 解析器 BeautifulSoup(markup, "lxml") 速度快文档容错能力强 需要安装 C 语言库
lxml XML 解析器 BeautifulSoup(markup, ["lxml-xml"])``BeautifulSoup(markup, "xml") 速度快唯一支持 XML 的解析器 需要安装 C 语言库
html5lib BeautifulSoup(markup, "html5lib") 最好的容错性以浏览器的方式解析文档生成 HTML5 格式的文档 速度慢不依赖外部扩展

将一段文档传入 BeautifulSoup 的构造方法,就能得到一个文档的对象,可以传入一段字符串或一个文件句柄.

from bs4 import BeautifulSoup
soup = BeautifulSoup(open("index.html"))
soup = BeautifulSoup("<html>data</html>")

# Beautiful Soup 的 4 种对象

Beautiful Soup 将复杂 HTML 文档转换成一个复杂的树形结构,每个节点都是 Python 对象,所有对象可以归纳为 4 种: Tag , NavigableString , BeautifulSoup , Comment .

html_doc = """
<html><head><title>The Dormouse's story</title></head>
<body>
<p class="title"><b>The Dormouse's story</b></p>
<p class="story">Once upon a time there were three little sisters; and their names were
<a href="http://example.com/elsie" class="sister" id="link1">Elsie</a>,
<a href="http://example.com/lacie" class="sister" id="link2">Lacie</a> and
<a href="http://example.com/tillie" class="sister" id="link3">Tillie</a>;
and they lived at the bottom of a well.</p>
<p class="story">...</p>
"""

以下代码块中 `#` 后面的内容一般代指输出结果

  1. Tag

Tag 对象与 XML 或 HTML 原生文档中的 tag 相同:

soup = BeautifulSoup('<b class="boldest">Extremely bold</b>')
tag = soup.b
type(tag)
# <class 'bs4.element.Tag'>

tag 中最重要的属性: name 和 attributes

  • Name: 每个 tag 都有自己的名字,通过 .name 来获取:
soup.a.name
# a

如果改变了 tag 的 name, 那将影响所有通过当前 Beautiful Soup 对象生成的 HTML 文档:

soup.a.name='你好' #只会修改第一个 a 标签
print(soup.你好)
#< 你好 class="sister" href="http://example.com/elsie" id="link1">Elsie</ 你好 >
  • Attributes: 一个 tag 可能有很多个属性. tag <a href="http://example.com/elsie" class="sister" id="link1">Elsie</a>, 有一个 “class” 的属性,值为 “sister” . tag 的属性的操作方法与字典相同;可以使用 .attrs 老获取全部属性 
soup.a['class']
#['sister']
soup.a['id']
# link1
soup.a.attrs
# {'href': 'http://example.com/elsie', 'class': ['sister'], 'id': 'link1'}

tag的属性可以被添加,删除或修改.tag的属性操作方法与字典一样
以下方法 只针对遇到的第一个标签的属性

#新增
soup.a['insert']='增加'
print(soup.a)
# <a class="sister" href="http://example.com/elsie" id="link1" insert="增加">Elsie</a>
#删除
del soup.a['class']
print(soup.a)
# <a href="http://example.com/elsie" id="link1">Elsie</a>
# 修改
soup.a['class']='brother'
print(soup.a.attrs)
# {'href': 'http://example.com/elsie', 'class': 'brother', 'id': 'link1'}
  1. NavigableString(可以遍历的字符串)

字符串常被包含在 tag 内.Beautiful Soup 用 NavigableString 类来包装 tag 中的字符串:

soup.a.string
# Elsie
type(soup.a.string)
<class 'bs4.element.NavigableString'>

tag 中包含的字符串不能编辑,但是可以被替换成其它的字符串,用 replace_with () 方法

soup.a.string.replace_with('你好')
print(soup.a)
# <a class="sister" href="http://example.com/elsie" id="link1"> 你好 & lt;/a>
  1. BeautifulSoup

BeautifulSoup 对象表示的是一个文档的全部内容。大部分时候,可以把它当作 Tag 对象,它支持 遍历文档树 和 搜索文档树中描述的大部分的方法。

  1. comment

Tag , NavigableString , BeautifulSoup 几乎覆盖了 html 和 xml 中的所有内容,但是还有一些特殊对象。容易让人担心的内容是文档的注释部分:

  • Coment 对象是一个特殊类型的 NavigableString 对象。
  • 如果标签内部的内容是注释,例如: <!-- Elsie --> 。那么该 NavigableSring 对象会转换成 Comment 对象,并且会把注释符号去掉。
markup = "<b><!--Hey, buddy. Want to buy a used parser?--></b>"
soup = BeautifulSoup(markup,'lxml')
print(soup.b.text+'输出为空')
#输出为空
comment = soup.b.string
print(comment)
# Hey, buddy. Want to buy a used parser?
print(type(comment))
# <class 'bs4.element.Comment'>

# 遍历文档树

  1. 子结点

一个 Tag 可能包含多个字符串或其它的 Tag, 这些都是这个 Tag 的子节点.Beautiful Soup 提供了许多操作和遍历子节点的属性.

注意: Beautiful Soup 中字符串节点不支持这些属性,因为字符串没有子节点

  1. tag 的名字

操作文档树最简单的方法就是告诉它你想获取的 tag 的 name. 如果想获取 标签,只要用 soup.head :

soup.head
# <head><title>The Dormouse's story</title></head>

soup.title
# <title>The Dormouse's story</title>

这是个获取 tag 的小窍门,可以在文档树的 tag 中多次调用这个方法。下面的代码可以获取 <body> 标签中的第一个 <b> 标签:

soup.body.b
# <b>The Dormouse's story</b>

Tip:通过点取属性的方式只能获得当前名字的第一个tag:

如果想要得到所有的 <a> 标签,或是通过名字得到比一个 tag 更多的内容的时候,就需要用到 Searching the tree 中描述的方法,比如: find_all ()

soup.find_all('a')
# [<a class="sister" href="http://example.com/elsie" id="link1">Elsie</a>, <a class="sister" href="http://example.com/lacie" id="link2">Lacie</a>, <a class="sister" href="http://example.com/tillie" id="link3">Tillie</a>]
type(soup.find_all('a'))
# <class 'bs4.element.ResultSet'>
  1. .contents 和 .children

tag 的 .contents 属性可以将 tag 的子节点以列表的方式输出:

soup.body.contents
# ['\n', <p class="title"><b>The Dormouse's story</b></p>, '\n', <p class="story">Once upon a time there were three little sisters; and their names were <a class="sister" href="http://example.com/elsie" id="link1">Elsie</a>, <a class="sister" href="http://example.com/lacie" id="link2">Lacie</a> and <a class="sister" href="http://example.com/tillie" id="link3">Tillie</a>; and they lived at the bottom of a well.</p>, '\n', <p class="story">...</p>, '\n']

通过 tag 的 .children 生成器,可以对 tag 的子节点进行循环:

print(type(soup.body.children))
# <class 'list_iterator'> 迭代器
for child in soup.body.children:
    print(child)
    print(type(child))
#                      < 第一行数据为空 >    
# <class 'bs4.element.NavigableString
#<p class="title"><b>The Dormouse's story</b></p>
#<class 'bs4.element.Tag'>
# <p class="story">Once upon a time there were three little sisters; and their names were
# <a class="sister" href="http://example.com/elsie" id="link1">Elsie</a>,
# <a class="sister" href="http://example.com/lacie" id="link2">Lacie</a> and
# <a class="sister" href="http://example.com/tillie" id="link3">Tillie</a>;
# and they lived at the bottom of a well.</p>
# <class 'bs4.element.Tag'>
  1. .descendants

.contents.children 属性仅包含 tag 的直接子节点。例如,标签只有一个直接子节点</p> <pre><code>head_tag.contents # [<title>The Dormouse's story</title>] </code></pre> <p>但是<title>标签也包含一个子节点:字符串 “The Dormouse’s story”, 这种情况下字符串 “The Dormouse’s story” 也属于<head>标签的子孙节点. <code>.descendants</code> 属性可以对所有 tag 的子孙节点进行递归循环</p> <div class="tags"> <a href="/tags/Python/" rel="tag"><i class="ic i-tag"></i> Python</a> <a href="/tags/%E7%88%AC%E8%99%AB/" rel="tag"><i class="ic i-tag"></i> 爬虫</a> </div> </div> <footer> <div class="meta"> <span class="item"> <span class="icon"> <i class="ic i-calendar-check"></i> </span> <span class="text">更新于</span> <time title="修改时间:2024-11-25 17:24:15" itemprop="dateModified" datetime="2024-11-25T17:24:15+08:00">2024-11-25</time> </span> <span id="2023/10/24/BaiduSyncdisk/大数据/Python/Python网络爬虫(二)/" class="item leancloud_visitors" data-flag-title="Python 网络爬虫(二)" title="阅读次数"> <span class="icon"> <i class="ic i-eye"></i> </span> <span class="text">阅读次数</span> <span class="leancloud-visitors-count"></span> <span class="text">次</span> </span> </div> <div class="reward"> <button><i class="ic i-heartbeat"></i> 赞赏</button> <p>请我喝[茶]~( ̄▽ ̄)~*</p> <div id="qr"> <div> <img data-src="/images/wechatpay.png" alt="shyl 微信支付"> <p>微信支付</p> </div> </div> </div> <div id="copyright"> <ul> <li class="author"> <strong>本文作者: </strong>shyl <i class="ic i-at"><em>@</em></i>碎念随风 </li> <li class="link"> <strong>本文链接:</strong> <a href="http://example.com/2023/10/24/BaiduSyncdisk/%E5%A4%A7%E6%95%B0%E6%8D%AE/Python/Python%E7%BD%91%E7%BB%9C%E7%88%AC%E8%99%AB%EF%BC%88%E4%BA%8C%EF%BC%89/" title="Python 网络爬虫(二)">http://example.com/2023/10/24/BaiduSyncdisk/大数据/Python/Python网络爬虫(二)/</a> </li> <li class="license"> <strong>版权声明: </strong>本站所有文章除特别声明外,均采用 <span class="exturl" data-url="aHR0cHM6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL2xpY2Vuc2VzL2J5LW5jLXNhLzQuMC9kZWVkLnpo"><i class="ic i-creative-commons"><em>(CC)</em></i>BY-NC-SA</span> 许可协议。转载请注明出处! </li> </ul> </div> </footer> </article> </div> <div class="post-nav"> <div class="item left"> <a href="/2023/10/24/BaiduSyncdisk/%E5%A4%A7%E6%95%B0%E6%8D%AE/Python/Python%E7%BD%91%E7%BB%9C%E7%88%AC%E8%99%AB%E4%B8%80/" itemprop="url" rel="prev" data-background-image="https://note.youdao.com/yws/api/personal/file/WEB8c4e6a5e39ca0d3102e6d9c6b6ac1e7c?method=download&shareKey=2a2660353b6a204aa269c33680c88a99" title="Python网络爬虫(一)"> <span class="type">上一篇</span> <span class="category"><i class="ic i-flag"></i> 爬虫</span> <h3>Python网络爬虫(一)</h3> </a> </div> <div class="item right"> <a href="/2023/11/03/BaiduSyncdisk/%E5%A4%A7%E6%95%B0%E6%8D%AE/Hive/Hive%E4%B8%AD%E7%9A%84Struct%E7%B1%BB%E5%9E%8BBug/" itemprop="url" rel="next" data-background-image="https://note.youdao.com/yws/api/personal/file/WEB8c4e6a5e39ca0d3102e6d9c6b6ac1e7c?method=download&shareKey=2a2660353b6a204aa269c33680c88a99" title="Hive中的Struct类型Bug"> <span class="type">下一篇</span> <span class="category"><i class="ic i-flag"></i> Bug</span> <h3>Hive中的Struct类型Bug</h3> </a> </div> </div> <div class="wrap" id="comments"></div> </div> <div id="sidebar"> <div class="inner"> <div class="panels"> <div class="inner"> <div class="contents panel pjax" data-title="文章目录"> <ol class="toc"><li class="toc-item toc-level-3"><a class="toc-link" href="#%E4%B8%80-request%E5%BA%93"><span class="toc-number">1.</span> <span class="toc-text"> 一、request 库</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#%E4%BA%8C-beautiful-soup%E5%BA%93"><span class="toc-number">2.</span> <span class="toc-text"> 二、Beautiful soup 库</span></a><ol class="toc-child"><li class="toc-item toc-level-4"><a class="toc-link" href="#beautiful-soup%E7%9A%844%E7%A7%8D%E5%AF%B9%E8%B1%A1"><span class="toc-number">2.1.</span> <span class="toc-text"> Beautiful Soup 的 4 种对象</span></a></li><li class="toc-item toc-level-4"><a class="toc-link" href="#%E9%81%8D%E5%8E%86%E6%96%87%E6%A1%A3%E6%A0%91"><span class="toc-number">2.2.</span> <span class="toc-text"> 遍历文档树</span></a></li></ol></li></ol> </div> <div class="related panel pjax" data-title="系列文章"> <ul> <li><a href="/2023/10/24/BaiduSyncdisk/%E5%A4%A7%E6%95%B0%E6%8D%AE/Python/Python%E7%BD%91%E7%BB%9C%E7%88%AC%E8%99%AB%E4%B8%80/" rel="bookmark" title="Python网络爬虫(一)">Python网络爬虫(一)</a></li><li class="active"><a href="/2023/10/24/BaiduSyncdisk/%E5%A4%A7%E6%95%B0%E6%8D%AE/Python/Python%E7%BD%91%E7%BB%9C%E7%88%AC%E8%99%AB%EF%BC%88%E4%BA%8C%EF%BC%89/" rel="bookmark" title="Python网络爬虫(二)">Python网络爬虫(二)</a></li> </ul> </div> <div class="overview panel" data-title="站点概览"> <div class="author" itemprop="author" itemscope itemtype="http://schema.org/Person"> <img class="image" itemprop="image" alt="shyl" data-src="/images/avatar.jpg"> <p class="name" itemprop="name">shyl</p> <div class="description" itemprop="description">人海未见之时,我亦独行在这城市。 料峭,春醒,酷暑,骤雨,寒意四起,大雁南飞,而后,大雪,寒风, 斗转星移,人间寒暑。</div> </div> <nav class="state"> <div class="item posts"> <a href="/archives/"> <span class="count">17</span> <span class="name">文章</span> </a> </div> <div class="item categories"> <a href="/categories/"> <span class="count">12</span> <span class="name">分类</span> </a> </div> <div class="item tags"> <a href="/tags/"> <span class="count">12</span> <span class="name">标签</span> </a> </div> </nav> <div class="social"> <span class="exturl item github" data-url="aHR0cHM6Ly9naXRodWIuY29tL3NoZW5neWFubGVp" title="https://github.com/shengyanlei"><i class="ic i-github"></i></span> <span class="exturl item email" data-url="bWFpbHRvOnMxMzkzNDczODE2NUAxNjMuY29t" title="mailto:s13934738165@163.com"><i class="ic i-envelope"></i></span> </div> <ul class="menu"> <li class="item"> <a href="/" rel="section"><i class="ic i-home"></i>首页</a> </li> <li class="item"> <a href="/about/" rel="section"><i class="ic i-user"></i>关于</a> </li> <li class="item dropdown"> <a href="javascript:void(0);"><i class="ic i-feather"></i>文章</a> <ul class="submenu"> <li class="item"> <a href="/archives/" rel="section"><i class="ic i-list-alt"></i>归档</a> </li> <li class="item"> <a href="/categories/" rel="section"><i class="ic i-th"></i>分类</a> </li> <li class="item"> <a href="/tags/" rel="section"><i class="ic i-tags"></i>标签</a> </li> </ul> </ul> </div> </div> </div> <ul id="quick"> <li class="prev pjax"> <a href="/2023/10/24/BaiduSyncdisk/%E5%A4%A7%E6%95%B0%E6%8D%AE/Python/Python%E7%BD%91%E7%BB%9C%E7%88%AC%E8%99%AB%E4%B8%80/" rel="prev" title="上一篇"><i class="ic i-chevron-left"></i></a> </li> <li class="up"><i class="ic i-arrow-up"></i></li> <li class="down"><i class="ic i-arrow-down"></i></li> <li class="next pjax"> <a href="/2023/11/03/BaiduSyncdisk/%E5%A4%A7%E6%95%B0%E6%8D%AE/Hive/Hive%E4%B8%AD%E7%9A%84Struct%E7%B1%BB%E5%9E%8BBug/" rel="next" title="下一篇"><i class="ic i-chevron-right"></i></a> </li> <li class="percent"></li> </ul> </div> </div> <div class="dimmer"></div> </div> </main> <footer id="footer"> <div class="inner"> <div class="widgets"> <div class="rpost pjax"> <h2>随机文章</h2> <ul> <li class="item"> <div class="breadcrumb"> </div> <span><a href="/2024/05/30/BaiduSyncdisk/tutorial/hello-world/" title="Hello World">Hello World</a></span> </li> <li class="item"> <div class="breadcrumb"> <a href="/categories/tutorial/" title="分类于 教程">教程</a> <i class="ic i-angle-right"></i> <a href="/categories/tutorial/Markdown/" title="分类于 Markdown">Markdown</a> </div> <span><a href="/2023/10/13/BaiduSyncdisk/tutorial/%E6%B5%8B%E8%AF%95%E5%9B%BE%E5%BA%8A/" title="测试图床">测试图床</a></span> </li> <li class="item"> <div class="breadcrumb"> <a href="/categories/bigData/" title="分类于 大数据">大数据</a> <i class="ic i-angle-right"></i> <a href="/categories/bigData/%E5%AE%9E%E6%97%B6%E6%95%B0%E4%BB%93/" title="分类于 实时数仓">实时数仓</a> </div> <span><a href="/2024/03/07/BaiduSyncdisk/%E5%A4%A7%E6%95%B0%E6%8D%AE/%E6%95%B0%E6%8D%AE%E4%BB%93%E5%BA%93/%E5%AE%9E%E6%97%B6%E6%95%B0%E4%BB%93%E6%90%AD%E5%BB%BA/" title="实时数仓搭建">实时数仓搭建</a></span> </li> <li class="item"> <div class="breadcrumb"> <a href="/categories/bigData/" title="分类于 大数据">大数据</a> <i class="ic i-angle-right"></i> <a href="/categories/bigData/Hive/" title="分类于 Hive">Hive</a> <i class="ic i-angle-right"></i> <a href="/categories/bigData/Hive/Bug/" title="分类于 Bug">Bug</a> </div> <span><a href="/2023/11/03/BaiduSyncdisk/%E5%A4%A7%E6%95%B0%E6%8D%AE/Hive/Hive%E4%B8%AD%E7%9A%84Struct%E7%B1%BB%E5%9E%8BBug/" title="Hive中的Struct类型Bug">Hive中的Struct类型Bug</a></span> </li> <li class="item"> <div class="breadcrumb"> <a href="/categories/bigData/" title="分类于 大数据">大数据</a> <i class="ic i-angle-right"></i> <a href="/categories/bigData/Flink/" title="分类于 Flink">Flink</a> </div> <span><a href="/2023/12/01/BaiduSyncdisk/%E5%A4%A7%E6%95%B0%E6%8D%AE/Flink/Flink%E7%9A%84%E6%90%AD%E5%BB%BA/" title="Flink的搭建">Flink的搭建</a></span> </li> <li class="item"> <div class="breadcrumb"> <a href="/categories/bigData/" title="分类于 大数据">大数据</a> <i class="ic i-angle-right"></i> <a href="/categories/bigData/Python/" title="分类于 Python">Python</a> <i class="ic i-angle-right"></i> <a href="/categories/bigData/Python/%E7%88%AC%E8%99%AB/" title="分类于 爬虫">爬虫</a> </div> <span><a href="/2023/10/24/BaiduSyncdisk/%E5%A4%A7%E6%95%B0%E6%8D%AE/Python/Python%E7%BD%91%E7%BB%9C%E7%88%AC%E8%99%AB%E4%B8%80/" title="Python网络爬虫(一)">Python网络爬虫(一)</a></span> </li> <li class="item"> <div class="breadcrumb"> <a href="/categories/bigData/" title="分类于 大数据">大数据</a> <i class="ic i-angle-right"></i> <a href="/categories/bigData/Flink/" title="分类于 Flink">Flink</a> </div> <span><a href="/2023/12/06/BaiduSyncdisk/%E5%A4%A7%E6%95%B0%E6%8D%AE/Flink/Flink%E5%AD%A6%E4%B9%A0-%E4%B8%80/" title="Flink学习(一)">Flink学习(一)</a></span> </li> <li class="item"> <div class="breadcrumb"> <a href="/categories/tutorial/" title="分类于 教程">教程</a> <i class="ic i-angle-right"></i> <a href="/categories/tutorial/Fluid%E4%B8%BB%E9%A2%98/" title="分类于 Fluid 主题">Fluid 主题</a> </div> <span><a href="/2023/10/13/BaiduSyncdisk/tutorial/fluid%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97/" title="fluid使用指南">fluid使用指南</a></span> </li> <li class="item"> <div class="breadcrumb"> <a href="/categories/bigData/" title="分类于 大数据">大数据</a> <i class="ic i-angle-right"></i> <a href="/categories/bigData/%E7%A6%BB%E7%BA%BF%E6%95%B0%E4%BB%93/" title="分类于 离线数仓">离线数仓</a> </div> <span><a href="/2023/10/19/BaiduSyncdisk/%E5%A4%A7%E6%95%B0%E6%8D%AE/%E6%95%B0%E6%8D%AE%E4%BB%93%E5%BA%93/%E6%95%B0%E4%BB%93%E6%90%AD%E5%BB%BA%E7%9A%84%E6%95%B0%E6%8D%AE%E8%B7%A8%E5%A4%A9%E9%97%AE%E9%A2%98/" title="数仓搭建的数据跨天问题">数仓搭建的数据跨天问题</a></span> </li> <li class="item"> <div class="breadcrumb"> <a href="/categories/bigData/" title="分类于 大数据">大数据</a> <i class="ic i-angle-right"></i> <a href="/categories/bigData/Flink/" title="分类于 Flink">Flink</a> </div> <span><a href="/2024/05/23/BaiduSyncdisk/%E5%A4%A7%E6%95%B0%E6%8D%AE/Flink/Flink%E7%9A%84%E7%AA%97%E5%8F%A3/" title="Flink的窗口">Flink的窗口</a></span> </li> </ul> </div> <div> <h2>最新评论</h2> <ul class="leancloud-recent-comment"></ul> </div> </div> <div class="status"> <div class="copyright"> © 2023 – <span itemprop="copyrightYear">2024</span> <span class="with-love"> <i class="ic i-shyl"></i> </span> <span class="author" itemprop="copyrightHolder">shyl @ 碎念随风</span> </div> <div class="count"> <span class="post-meta-item-icon"> <i class="ic i-chart-area"></i> </span> <span title="站点总字数">61k 字</span> <span class="post-meta-divider">|</span> <span class="post-meta-item-icon"> <i class="ic i-coffee"></i> </span> <span title="站点阅读时长">56 分钟</span> </div> <div class="powered-by"> 基于 <span class="exturl" data-url="aHR0cHM6Ly9oZXhvLmlv">Hexo</span> & Theme.<span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL2FtZWhpbWUvaGV4by10aGVtZS1zaG9rYQ==">Shoka</span> </div> </div> </div> </footer> </div> <script data-config type="text/javascript"> var LOCAL = { path: '2023/10/24/BaiduSyncdisk/大数据/Python/Python网络爬虫(二)/', favicon: { show: "(●´3`●)やれやれだぜ", hide: "(´Д`)大変だ!" }, search : { placeholder: "文章搜索", empty: "关于 「 ${query} 」,什么也没搜到", stats: "${time} ms 内找到 ${hits} 条结果" }, valine: true,fancybox: true, copyright: '复制成功,转载请遵守 <i class="ic i-creative-commons"></i>BY-NC-SA 协议。', ignores : [ function(uri) { return uri.includes('#'); }, function(uri) { return new RegExp(LOCAL.path+"$").test(uri); } ] }; </script> <script src="https://cdn.polyfill.io/v2/polyfill.js"></script> <script src="//cdn.jsdelivr.net/combine/npm/pace-js@1.0.2/pace.min.js,npm/pjax@0.2.8/pjax.min.js,npm/whatwg-fetch@3.4.0/dist/fetch.umd.min.js,npm/animejs@3.2.0/lib/anime.min.js,npm/algoliasearch@4/dist/algoliasearch-lite.umd.js,npm/instantsearch.js@4/dist/instantsearch.production.min.js,npm/lozad@1/dist/lozad.min.js,npm/quicklink@2/dist/quicklink.umd.js"></script> <script src="/js/app.js?v=0.2.5"></script> <script src="/live2dw/lib/L2Dwidget.min.js?094cbace49a39548bed64abff5988b05"></script><script>L2Dwidget.init({"pluginRootPath":"live2dw/","pluginJsPath":"lib/","pluginModelPath":"assets/","tagMode":false,"debug":false,"model":{"jsonPath":"/live2dw/assets/koharu.model.json"},"display":{"position":"right","width":150,"height":300},"mobile":{"show":false},"log":false});</script></body> </html>