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

爬虫第七篇数据爬取及解析

这篇博客旨在分享学习过程中的心得和体会,如果有错误请指出,感谢大家。

经过前面的学习,那么我们也就进入了数据爬取的阶段,大家跟着我的步伐一起来学习一下,爬虫的数据爬取与数据解析(本篇主要针对于带有页码的网页)

第一站单页数据获取

首先我们从简单的带页码的网页开始爬取,为啥从带页码的网页开始,有页码的网页点击页码会重新刷新页码数据,可以去掉一部分我们不需要的数据(因为我们一般需要的数据都在页码包含的url里面)

我们接下来实现输入我们需要的页码,然后爬虫自动去获取对应页面的数据,然后返回给我们,再将页码内容需要的具体数据输出

第一步找到页码在url上面的对应数据位置

我们先将其中几页的目标url,将其取下来,比对一下,哪个数据有可能是对应页码的数据

我试验的网址是{pageindex=页码}所以我们可以把url = f‘http://....&pageindex={你定义的变量}

这样改完url之后,获取完你输入的数字后,他会自动写入url,取获取对应网页的数据那么代码如下

import requests

# 用户输入页码
pageindex = input('请输入你要查看的神秘页码:')
url = f'https://example.com/api/data?pageIndex={pageindex}'
res = requests.get(url)

记得url都最好带上这个f,这样他会用fstring去获取,不容易出错 ,不然会出现解析不出来的情况

 第二步解析目标数据

然后就是解析目标数据,然后去获取我们需要的数据

比如目标数据格式为

{"code":200,"data":{

"posts":[{"id"=0,"name"=xiaoli

}]}}

这个时候我们需要去获取最里面的id和name数据我们应该怎么写呢?

print(['data']['post'][0]['id'])

第三步循环取出所有需要的id 

那么我们再衍生一下,通过循环将列表post里面的所有的id都取出来需要怎么写呢?

#将响应数据转换为字典类型
res_data = res.jason()
for i in res_data['data']['post']#通过for循环遍历数据,取出其中的id
    print(i['id'])

由此我们就完成了我们最开始的第一个目标,输入页码跳转对应页面,并输出需要的数据

 第二站多页数据获取

获取多页的数据比如获取1-10页的全部的id数据

第一步构建循环去获取1-10页的全部数据

这是知道需要的页码数量的情况下的

import request
for page_index in range(1,11):
    url = https://....pageindex={page_index}....
    res = request.get(url)
    res=res.jason()
    

 第二步通过循环去解析对应页码里面数据里的id

import request
num = 1
for page_index in range(1,11):
    url = https://....pageindex={page_index}....
    res = request.get(url)
    res_data=res.jason()
    for i in res_data['data']['post']#通过for循环遍历数据,取出其中的id
    print(i['id'])

第三站未知页数数据获取

根据上面的内容,那么我们只要加一个判定上面时候拉去数据为空就停止即可完成全部网页的拉取

import requests
    page_index = 1  # 代表分页
count = 1  # 代表取出的序号
while True:
    url = f'https://...pageIndex={page_index}...'
    res = requests.get(url)
    res_data = res.json()
 # 结束的判断条件
    if res_data['Data']['Posts'] == []:#根据网页的数据去判断什么时候拉不到数据
        break
 # 解析数据
    for i in res_data['Data']['Posts']:
        print(count, i['id'])
        count += 1
    print(f'第{page_index}页数据已经全部获取完毕')
    page_index += 1

以上可以去弄比较简单的网页,如果网页会去判断你是否为真人,那么你就需要加上伪装

headers = {
 'user-agent':'你网页里的useragent'
}

相关文章:

  • SpringBoot 配置文件
  • AGI觉醒假说的科学反驳:从数学根基到现实约束的深度解析
  • JavaScript变量的作用域介绍
  • 什么是矩阵账号?如何高效运营tiktok矩阵账号
  • 什么是超越编程(逾编程)(元编程?)
  • DuodooBMS源码解读之 odoo_phoenix_alarm模块
  • AI Agent实战:打造京东广告主的超级助手 | 京东零售技术实践
  • ICRA2024:CoLRIO,用于机器人群体的激光雷达测距-惯性集中状态估计
  • 虚拟机中ffplay播放RTSP流,不能播放交换机的设备,能播放虚拟机流
  • 冯·诺依曼体系结构、理解操作系统管理
  • 助力DeepSeek私有化部署服务:让企业AI落地更简单、更安全
  • TiDB 是一个分布式 NewSQL 数据库
  • 基于LangGraph和Ollama实现可调用AI搜索引擎Tavily的Agentic RAG问答机器人
  • 小程序的分包
  • Ubuntu 22.04 Install deepseek
  • 【HeadFirst系列之HeadFirst设计模式】第7天之命令模式:封装请求,轻松实现解耦!
  • Windows 下 Ollama 安装deepseek本地模型
  • Java集合框架大师课:从青铜到王者的数据结构指南(一)
  • 大白话React第一章基础入门
  • 纷析云开源版- Vue2-增加字典存储到localStorage
  • 著名古人类学家高星获推选为国际史前与原史研究院院士
  • 确诊前列腺癌后,拜登首次发声
  • 贵州茅台:支持工作餐不上酒的规定,请投资者相信茅台创新和自我调节能力
  • 电子凭证会计数据标准推广至全国
  • 音著协宣布胜诉,虎牙公司终审被判侵权
  • 解放日报“解码上海AI产业链”:在开源浪潮中,集聚要素抢先机