当前位置: 首页 > article >正文

爬虫入门学习

流程

  • 获取网页内容
    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


http://www.kler.cn/news/283734.html

相关文章:

  • Java Web —— 第十天(AOP切面编程)
  • Dxf文件中多段线弧线的计算
  • 三星与海力士发力决战HBM4
  • 【知识】缓存类型和策略
  • 数据合规性分析:守护信息安全的关键防线
  • 原生开发柱状图
  • 钉钉好用吗?类似钉钉的内部知识库有哪些?
  • 【微信小程序】微信小程序如何使用 MobX 进行状态管理?
  • 【已解决】win11笔记本电脑突然无法检测到其他显示器 / 无法使用扩展屏(2024.8.29 / 驱动更新问题)
  • Linux使用ifconfig配置临时ip地址
  • ET6框架(八)事件系统
  • UE5 摄像机图像采集到材质 映射到 UI 和 物体表面
  • C语言内存操作函数
  • gitee版本控制
  • 记录|如何全局监听鼠标和键盘等事件
  • ARCGIS 纸质小班XY坐标转电子要素面(2)
  • JavaScript中DOW和BOW;笔记分享;知识回顾
  • YOLOv9改进策略【模型轻量化】| PP-LCnet
  • 代码随想录算法训练营第五十八天 | 图论part08
  • 验证码获取测试的步骤和要点
  • nipplejs(虚拟游戏操作杆)跟fabric(canvas缩放、旋转)
  • 解决linux每次打开新终端都要重新source ~/.bashrc问题
  • word文档转html(只支持段落和表格)
  • git 拉取或推送到指定分支
  • IPython 使用技巧整理
  • nginx启动报错:worker_connections exceed open file resource limit: 1024
  • ES6基础----Map的使用
  • 【问题分析】CtsWindowManagerDeviceAnimations【Android15】
  • SpringBoot中@SchedulerLock注解实现定时任务中分布式锁的使用
  • CTFhub通关攻略-SSRF篇【1-5关】