首页 > 编程问答 >Python 卡在第 1 页

Python 卡在第 1 页

时间:2024-08-06 15:23:59浏览次数:14  
标签:python web-scraping

让它读取下一页结果的最佳方法是什么?目前正在拉取数据,但只有第 1 页

import requests
import json

page = 1
url = "https://api-prod.grip.events/1/container/4368/search?search=&sort=name&order=asc&type_id=4907,4906,5265,4964,4904,1026,4908&page=%d"
headers = {
    'x-authorization': 'a422cc2a-31fb-4b4e-a1bd-a34b561adc6c'
}
with open("list.txt", "w") as f:
    for page in range(1, 1000):
        response = requests.get(url % page, headers=headers).json()
        contacts = response["data"]
        for contact in contacts:
            target = "%s\t%s\t%s\t%s" % (contact["company_name"], contact["job_title"], contact["name"],  contact["job_industry"])
            f.write(target + "\n")
            print(target)

问题在于,你是在为 每一页 的结果创建一个新的 requests.get() 请求,但你却在将所有内容写入 同一个文件 "list.txt" 中,而没有在每一页之间进行区分。

以下是如何修改你的代码,使其可以遍历所有页面并将结果保存到单独的文件中:

import requests
import json

url = "https://api-prod.grip.events/1/container/4368/search?search=&sort=name&order=asc&type_id=4907,4906,5265,4964,4904,1026,4908&page={}"
headers = {'x-authorization': 'a422cc2a-31fb-4b4e-a1bd-a34b561adc6c'}

for page in range(1, 1000):
    response = requests.get(url.format(page), headers=headers)
    response.raise_for_status()  # 检查请求是否成功

    data = response.json()
    contacts = data["data"]

    if not contacts:  # 如果当前页面没有数据,则退出循环
        break

    with open(f"list_page_{page}.txt", "w") as f:
        for contact in contacts:
            target = f"{contact['company_name']}\t{contact['job_title']}\t{contact['name']}\t{contact['job_industry']}"
            f.write(target + "\n")
            print(target)

这段代码做了以下几件事:

  1. 为每一页创建一个单独的文件: f"list_page_{page}.txt" 会为每一页创建一个新的文件,例如 list_page_1.txt list_page_2.txt 等等。
  2. 检查请求是否成功: 使用 response.raise_for_status() 来检查请求是否成功,如果出现错误会抛出异常。
  3. 检查数据是否为空: 在每一页请求后,检查 data["data"] 是否为空。如果为空,说明已经到达最后一页,可以跳出循环。

这样修改后,你的代码就可以遍历所有页面并将结果保存到不同的文件中。

标签:python,web-scraping
From: 72483889

相关文章

  • 无法反序列化解码 JWT python 时的关键数据
    我正在使用pyjwt库来解码JWT令牌。我在解码时遇到此错误。代码在文档中给出。importjwtencoded_jwt='''eyJ0eXAiOiJKV1QiLCJhbG......'''secret=b''''-----BEGINPUBLICKEY-----MIIFRjCCBC6gAwIBAgIQCIdSGhpikQCjOIY154XoqzANBgkqhkiG9......
  • Python科研武器库 - 字符串操作 - 字符串开头结尾判断 startswith() endswith()
    使用场景:按照开头的前缀、结尾的后缀来判断、筛选目标字符串。使用函数:str.startswith(search_string,start,end)str.endswith(search_string,start,end)search_string:要匹配的目标字符串。start:要从中匹配search_string的str的起始索引。end:要考虑匹配的str的结......
  • 我正在 python 中使用 aspose.pdf 将 pdf 转换为 excel 。但问题是它只能将 pdf 的前
    `从tkinter导入*将aspose.pdf导入为ap从tkinter导入文件对话框importpandasaspdinput_pdf=filedialog.askopenfilename(filetypes=(("PDF文件",".pdf"),("所有文件",".")))output_file=filedialog.asksaveasfil......
  • 如何在selenium python中访问电子邮件中的所有文件夹
    我使用imaplib库,但有时无法访问某些帐户,我使用poplib但它只支持访问主邮箱,但不支持访问其他文件夹,如垃圾邮件我想使用imaplib,但不会出现有时甚至无法访问的错误尽管我有一个帐户,但我仍然可以访问它,或者是否有另一个库可以快速支持该帐户?你想要使用Selenium和Python......
  • python安装torch-cluster、torch-scatter、torch-sparse和torch-geometric | torch_ge
    1.检查CUDA版本【方法1】用nvidia-smi已装cuda,用nvidia-smi或nvcc-V查看【方法2】用torch已装torch,用torch代码打印importtorchprint(torch.__version__)#查看pytorch安装的版本号print(torch.cuda.is_available())#查看cuda是否可......
  • Python:学生成绩管理系统(大学编程期末实验)
    引言在这个信息时代,教育管理的自动化已成为提高效率的关键。本文将介绍如何使用Python开发一个学生成绩管理系统,旨在简化成绩记录、查询和分析的过程。创作灵感来源本项目灵感来源于我在教育机构的工作经历,以及对提高教育管理效率的持续追求。通过复盘过往项目,我意识到一个......
  • 手把手教你使用Python网络爬虫下载一本小说(附源码)
    大家好,我是Python进阶者。前言前几天【磐奚鸟】大佬在群里分享了一个抓取小说的代码,感觉还是蛮不错的,这里分享给大家学习。一、小说下载如果你想下载该网站上的任意一本小说的话,直接点击链接进去,如下图所示。只要将URL中的这个数字拿到就可以了,比方说这里是951,那么这个数字......
  • 借助 Transformer 实现美股价格的预测(Python干货)
    作者:老余捞鱼原创不易,转载请标明出处及原作者。写在前面的话:      Transformer是一种在自然语言处理等领域广泛应用的深度学习架构,与传统的循环神经网络(RNN)相比,Transformer可以并行处理输入序列的各个位置,大大提高了计算效率。而且通过多层的深度堆叠,能够学习......
  • 将 Mojo 与 Python 结合使用
    Mojo允许您访问整个Python生态系统,但环境可能会因Python的安装方式而异。花些时间准确了解Python中的模块和包的工作原理是值得的,因为有一些复杂情况需要注意。如果您以前在调用Python代码时遇到困难,这将帮助您入门。Python中的模块和包让我们从Python开始,如......
  • Mojo和Python中的类型详解
    调用Python方法时,Mojo需要在原生Python对象和原生Mojo对象之间来回转换。大多数转换都是自动进行的,但也有一些情况Mojo尚未处理。在这些情况下,您可能需要进行显式转换,或调用额外的方法。Python中的Mojo类型Mojo基本类型隐式转换为Python对象。目前支持的......