爬虫步骤:
1.获取网页内容: 通过发送HTTP请求
HTTP的两种主要方法: GET方法: 主要用于获取数据 POST方法 : 主要用于创建数据
HTTP请求有三部分组成: 请求行: 包含方法类型,资源路径,协议版本 请求头 请求体
HTTP响应也有三个部分组成: 状态行 响应头 响应体
2.解析网页内容
3.储存或分析数据
可以通过查看网站的robots.txt文件查看哪些网页允许被爬取
可以通过篡改headers的User-Agent属性来伪装成是浏览器的请求而不是程序的请求
可以通过返回对象的status_code属性来查看返回的HTTP状态码
一个网页有三大要素:
CSS:定义网页的格式
HTML:定义了网页的结构和信息
JavaScript:定义了用户和网页的交互逻辑
HTML中的每个<>表示一个标签:
<!DOCTYPE HTML>用来告知浏览器这个文件类型是HTML
<html>为开始标签<html>为闭合标签(带"/")
起始标签和闭合标签连同他们之间的内容可以看成HTML的一个元素
<body>和</body>标签里面表示文档的主要内容
<h1>和</h1>中间的内容表示主题标题,也就是最大字号的标题
<p>和</p>中间的表示文本段落
<h1>和<p>元素可以看成是<body>的子元素 ,他两之间可以看成是兄弟元素
大致结构 :
<!DOCTYPE HTML>
<html>
<body>
<h1> ... </h1>
<p> ... </p>
</body>
<html>
不同的p标签之间会自动进行断行,表示不同段落
<br>标签可以在文本段落里强制换行,即换行标签,只有起始标签,没有配对的闭合标签
可以用<b>和</b>标签文档内容进行加粗
用<i>和</i>标签包含文字内容变成斜体
用<u></u>包含文字内容加下划线
加图片 <img str="图片路径或指向图片的链接"> # src为source
也可以在标签里面添加一些其他属性,例如 width = "500px"
<a>标签用来添加链接 用户可以通过链接在不同页面之间跳来跳去
格式为 <a href="">在起始和闭合标签之间放上链接对应的文字,展示给用户的就不再是原始直白的地址了 例如: <a href="链接地址">我的链接</a> 有个选择属性为: target 用来指定链接打开的方式,默认值为 target = "_self" 表示在当前窗口跳转链接 "blank"表示在新窗口打开
<div>和<span>标签都是容器,本身都不包含任何内容,所以一般都是让其他元素被这两个容器包围,让其称为这两个容器的子元素,这样就可以把CSS的样式直接添加到某个容器上,而不是一个个元素上,省事
区别 : <div>是块级元素,独占自己的一块,一行只能放一个<div>元素
而<span>是内联元素,一行可以有多个span元素
<ol>和</ol>定义一个有序列表 # : ol : ordered list
列表里面的每项元素要用<li>和</li>标签 li : list item
<ul>和</ul>定义无序列表 无序列表前面一般不会有数字了,列表里面的每项元素ye要用<li>和</li>标签
例如 :
<ol>
<li>数学</il>
<li>语文</il>
<li>英语</il>
</ol>
<table>和</table>是用来定义表格的标签, 里面一般会嵌套和表格相关的元素
<thead>表示表格的头部
<tbody>表示表格的主题
在<thead>和<tbody>中间会放上<tr></tr>的标签来定义表格行
在<tr>里面会放上<td>单元格来表示一项项数据
默认表格是没有边框的,可以在<table, border="1">来为表格添加边框
class这个属性可以运用来所有标签上,来定义元素的类的名,类可以帮助我们分组
例如 <p class="content"> <p class="review">来区分哪些文本是文章,哪些是评论
用BeautifulSoup解析Html
将返回的HTML转换成字符串
将字符串传给其构造函数,并指定解析器 例如 : content = request.get("URL").txt
soup = BeautifulSoup(content, "html.parser")