Python爬虫案例:获取网页动态加载的数据

我们在日常抓取网页中的数据时经常会遇到“分页”的情况,为了能抓取网站上不同分页的内容通常会通过循环遍历这些“特征序号”来访问对应网页分页;下图中是豆瓣电影Top250的网页,可以观察到不同分页间的特征序号为url"start="后的数字,初始值为0、分页间隔25,到225结束。

 对分页的访问爬取可通过如下代码实现

import requests
from bs4 import BeautifulSoup
url = "https://movie.douban.com/top250?start=%d&filter="
head={'User-Agent':''}#字典的值从标头获取
for i in range(0,226,25):
    req = requests.get(url%i,headers=head)
    soup = BeautifulSoup(req.text, 'html.parser')
    '''下方写爬取数据的代码'''
    
    '''代码结束'''

但在其它的一些网页的表单分页数据的加载方式与上述不同,网页会在你选择不同的分页按钮后动态加载对应的数据。以下用获取某编程网站线上赛排行信息来进行分析

在切换分页时观察url并未发生变化,即可知不能通过遍历特征序号进行操作;此时打开控制台的“网络”页,再点击不同的分页按钮时观察到加载了一个“query"开头的文件,双击该文件再选择预览项可发现此文件包含网页分页的内容,此时考虑如何爬取这些数据 

点击不同分页query文件的”载荷“选项发现”start"对应的值与”特征序号“有同样特性,此处是从0开始中间每页间隔10;按照此思路模仿爬取豆瓣电影的操作,代码实现如下 

import requests
import json
url = "https://www.matiji.net/exam-back/pc/queryMatchRankListById.do"#query文件地址
head = {'User-Agent': ''}#值从标头获取
num=0
while num<=3130:
    data = {'start': num,'limit': 10,'matchId': 144}
    res = requests.post(url, headers=head, data=data)
    ans = json.loads(res.text)["data"]
    ans0=ans['datas']
    '''下面写爬取数据的逻辑'''
    
    '''代码结束'''

 

<think>嗯,用户之前问过关于git stash pop导致合并冲突的问题,现在他们又在询问git stash save "临时保存本地修改"。看起来他们可能在使用Git储藏功能时遇到了一些问题,或者想更深入了解如何正确使用git stash来管理他们的工作进度。 首先,我需要确认用户的使用场景。他们可能是在开发过程中需要切换分支,但当前分支有未完成的修改,不想提交,所以使用stash来暂存这些改动。也可能是在合并或拉取代码前,先保存本地修改以避免冲突。用户可能对stash的基本操作不太熟悉,或者之前遇到了冲突问题,现在想更稳妥地保存修改。 接下来,用户的需求可能不仅仅是了解git stash save的命令,而是想确保他们的修改能被正确保存,并在需要时恢复。他们可能担心保存时的注释是否重要,或者保存后如何管理多个储藏条目。此外,用户可能想知道这个命令和其他stash命令(如git stash push)的区别,以及最佳实践是什么。 深层需求方面,用户可能希望有一个安全可靠的方法来管理他们的工作状态,避免丢失代码或产生冲突。他们可能之前因为合并冲突而遇到问题,现在想更谨慎地使用储藏功能,确保每次保存都有明确的注释,方便后续恢复。同时,他们可能想了解如何有效组织多个储藏条目,尤其是在处理多个任务时。 需要确认git stash save和git stash push的区别。因为Git现在推荐使用push而不是save,但save仍然可用,可能会有兼容性问题吗?需要指出这一点,避免用户在使用旧版本Git时遇到问题。此外,保存时的注释非常重要,帮助用户识别不同的储藏,所以需要强调注释的必要性。 可能用户在使用stash pop时遇到问题后,现在想正确使用stash save来避免冲突,因此需要详细说明如何正确保存和恢复,以及解决冲突的步骤。另外,用户可能对储藏的工作原理不太清楚,需要简单解释储藏栈的概念,以及如何管理多个储藏。 需要确保回答结构清晰,分点说明,包括命令的作用、使用场景、注意事项、操作示例以及与其他命令的关系。还要提醒用户在使用后如何恢复,并处理可能的冲突,就像之前的问题一样。这样用户能全面理解整个流程,减少后续的问题。</think>--- ### `git stash save "临时保存本地修改"` 的作用 **核心功能**:将当前工作目录和暂存区的修改保存到 Git 的“储藏栈”(stash stack)中,并**清空工作区**,使你可以切换到其他分支或处理其他任务。 **适用场景**:需要临时保存未提交的代码(如紧急修复 Bug、切换分支),但不想通过 `git commit` 生成正式提交记录。 --- ### 分步使用说明 #### 1. **保存当前修改** ```bash git stash save "临时保存本地修改" # 输出示例:Saved working directory and index state On main: 临时保存本地修改 ``` - **效果**: - 工作目录和暂存区的改动会被储藏(**未跟踪文件默认不储藏**)。 - 工作区恢复到最近一次提交的状态(`HEAD`)。 --- #### 2. **查看储藏列表** ```bash git stash list # 输出示例:stash@{0}: On main: 临时保存本地修改 ``` - **格式**:`stash@{n}` 表示储藏记录的索引,`n` 为编号(最近储藏的记录为 `stash@{0}`)。 --- #### 3. **恢复储藏的修改** - **恢复最新储藏并删除记录**: ```bash git stash pop # 相当于 `git stash apply` + `git stash drop` ``` - **仅恢复但不删除记录**: ```bash git stash apply stash@{0} # 指定储藏编号(默认恢复 `stash@{0}`) ``` --- ### 注意事项 1. **未跟踪文件需显式储藏**: 默认不储藏未跟踪文件(新创建且未 `git add` 的文件),若需包含,使用: ```bash git stash save -u "备注" # `-u` 或 `--include-untracked` ``` 2. **冲突处理**: 恢复储藏时若与当前分支代码冲突,需手动解决(类似合并冲突)。 --- ### 操作流程示意图 ```bash # 典型场景:临时切换分支 git stash save "保存修改" → git checkout 其他分支 → 完成任务 → git checkout 原分支 → git stash pop ``` --- ### 与其他命令的对比 | 命令 | 行为
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值