Java教程

【08】爬虫

本文主要是介绍【08】爬虫,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1、相关包准备

  • win10打开cmd,直接pip install 包名,安装requestsbeautifulsoup4prettytable

2、html基础准备

-详见链接https://www.jianshu.com/p/256296abefdc

  • HTML标签主要分为单标签和双标签两类。单标签只有开始标签,所以需要在开始的同时关闭,例如meta标签,用于定义Web网页的基本信息。以下meta标签指定了网页使用UTF-8字符集,通过标签的属性值进行设定,即将属性名和属性值都写在标签内部。
  • h1至h6,分别表示一级标题至六级标题,标题文字会依次减小
  • 再介绍两个新的概念:块级标签和内联标签。块级标签单独占据一行,其后面的标签会在下一行出现,而多个内联标签则会显示在同一行中,直到总宽度超过了浏览器宽度才换行。之前介绍的h1至h6、p都是块级标签,而a、img则是内联标签。浏览器在渲染HTML页面时会遵循默认的文档流,从上往下依次显示每个HTML标签,对于块级标签则独占一行,对于内联标签则放置在同一行,直到总宽度超过浏览器宽度才换行。
  • 可以在HTML标签之间或者p等标签内容中添加br,用于添加空白行或换行
  • div和span分别属于块级标签和内联标签,都可以用作其他HTML标签或页面文本的容器。它们本身没有具体的语义,仅作为其他内容的容器,从而将Web页面更加结构化地组织起来。我们在设计网页时,往往会将页面划分为多个区域,例如导航栏、侧边栏、第一部分、第二部分、第三部分、底栏等,如果将全部内容都直接写在body的下一级中,则会给开发带来很大的不便。相比之下,合理使用div勾勒出网页内容的结构和层次,可以使代码编写和阅读变得更加清晰明朗。
  • 使用table标签可以定义表格,用tr表示表格中的每一行,用td表示每一行中的单元格,用th表示表头行中的单元格。以下是一个简单的例子,当然可以通过更复杂的语法实现合并单元格等效果,在我们掌握了CSS之后,也可以进一步美化表格样式,使得表格看起来更美观。
  • 使用ul和ol定义列表,分别对应无序列表和有序列表,用于展示多个并列项,每一项用li定义

3、编解码

以网页使用gbk编码,如何正常显示获取的数据为例,大致过程如下所示。

  • 网页使用gbk编码,所以我们爬虫抓取的数据是原始文字,经过gbk编码得到的二进制数据;
  • 而python会使用默认的ISO-8859-1来解码二进制数据,所以显示的文字会乱码;
  • 此时想要正确显示文字,需要先对解码后的字符串,进行ISO-8859-1格式的编码,还原成服务端的二进制数据,再用gbk格式进行解码,就可以得到正常显示的文字了
import requests

url='https://www.qbiqu.com/0_1/'

response=requests.get(url)
print(response.text.encode(response.encoding).decode('gbk'))        #先对字符串进行编码还原成原始二进制数据,再用gbk解码得到正常文字,其中response.encoding为python默认编码,response.apparent_encoding是通过内容分析出的编码,使用response.apparent_encoding也行,代码对不同编码格式的网站兼容性更强
这篇关于【08】爬虫的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!