流程
- 获取网页内容
HTTP请求
Python Requests - 解析网页内容
HTML网页结构
Python Beautiful Soup - 储存或分析数据
HTTP (Hypertext Transfer Protocol)
客户端和服务器之间的请求-响应协议
Get方法:获得数据
POST方法:创建数据
-
HTTP请求
请求行 方法类型 资源路径?查询参数 协议版本
POST /user/info?new_user=true&… HTTP/1.1
请求头 主机域名 客户端相关信息 想接受的响应数据类型
Host:www.
User-Agent:
Accept: /
请求体 客户端传给服务器的其他任意数据 -
HTTP响应
状态行 协议版本 状态码 状态消息
HTTP/1.1 200 OK
响应头 告知客户端的信息(响应时间、响应内容类型、编码格式
响应体 服务器给客户端的数据内容
Python Requests
- 安装
pip install requests
import requests
伪装浏览器请求
headers = { "User-Agent": "Mozilla/5.0(Windows NT 10.9; Win64; x64)"
response = requests.get("网址")
if response.ok:获取响应体内容print(response.text)
else:print("请求失败")
HTML 定义网页的结构和信息
- 常用标签
<h1>标题</h1>
<p>文本段落</p>
<br>换行
<b>加粗</b>
<img src="" width="500px">图片
<a href="链接" target="跳转方式_self/_blank">链接名</a>
<div></div> 容器 块级元素 独占一块
<span></span> 容器 内联元素 一行可有多个
<ol>有序列表<li></li><li></li>
</ol>
<ul>无序列表<li></li><li></li>
</ul>
表格
<table 边框border="1"><thead>头部</thead><tbody>主体<tr>行<td>列</td></tr></tbody>
</table>
class属性 类可以用于所有元素帮助分组
<p class="content"></p>
Beautiful Soup
- 安装
pip install bs4 - 基本用法
from bs4 import BeautifulSoup
import requests
content = requests.get("").text
# 传入构造函数
soup = BeautifulSoup(content, "html.parser")
# 解析成树状结构的实例对象
all_prices = soup.findAll("p", attars={"class": "price_color"})
# 返回可迭代对象
for price in all_prices:print(price.string[2:])
正则表达式库re
根据自定义规则匹配一个或多个字符
多线程库threading
让不同线程同时爬取多个网页
数据分析
待进一步学习
工具 腾讯chatBI