requests html 下一页url,requests_html 报错

本文介绍在CentOS7环境下使用requests_html模块时遇到的BadStatusLine错误及解决方案。通过安装一系列依赖库,成功解决了HTML渲染的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

centos7  运行

session = requests_html.HTMLSession()

h = session.get(url)

# print(h.html)

h.html.render()

报错:

raise BadStatusLine(line)

http.client.BadStatusLine: GET /json/version HTTP/1.1

安装依赖:

yum install pango.x86_64 libXcomposite.x86_64 libXcursor.x86_64 libXdamage.x86_64 libXext.x86_64 libXi.x86_64 libXtst.x86_64 cups-libs.x86_64 libXScrnSaver.x86_64 libXrandr.x86_64 GConf2.x86_64 alsa-lib.x86_64 atk.x86_64 gtk3.x86_64 -y

yum install ipa-gothic-fonts xorg-x11-fonts-100dpi xorg-x11-fonts-75dpi xorg-x11-utils xorg-x11-fonts-cyrillic xorg-x11-fonts-Type1 xorg-x11-fonts-misc -y

来源:https://www.cnblogs.com/yubs/p/13054427.html

import sys import requests import json import re from pygments import highlight # 新增高亮库 from pygments.lexers import JsonLexer from pygments.formatters import Terminal256Formatter from conversion import JsonToExcelConverter import pandas as pd from datetime import datetime #飞书多维表格操作,对外提供接口读、写表格 class FeishuTable: def __init__(self): self.getRecordsId(app_token="SLfgb7Oc0aRNe9sGUCFcZsVhnDe") self.getRecordsId(table_id="tblduaK1bEJAT1ZV") #获取多维表格所有的record_id @classmethod def getRecordsId(cls, app_token, table_id, page_size=100, page_token=None): """ 从飞书多维表格中读取所有记录,并支持分页处理。 参数: - app_token (str): 多维表格应用的唯一标识符。 - table_id (str): 数据表的唯一标识符。 - page_size (int, optional): 每页返回的记录数量,默认值为100,最大值为500。 - page_token (str, optional): 分页标记,用于获取下一页数据。 返回: - dict: 包含所有记录的字典,结构为 {'data': {'items': all_records}}。 """ url = f"https://open.feishu.cn/open-apis/bitable/v1/apps/{app_token}/tables/{table_id}/records" headers = cls.getHeaders() all_records = [] while True: if page_token: url = f"https://open.feishu.cn/open-apis/bitable/v1/apps/{app_token}/tables/{table_id}/records?page_size={page_size}&page_token={page_token}" else: url = f"https://open.feishu.cn/open-apis/bitable/v1/apps/{app_token}/tables/{table_id}/records?page_size={page_size}" response = requests.request("GET", url, headers=headers) response.raise_for_status() # 检查请求是否成功 parsed_response = response.json() all_records.extend(parsed_response['data']['items']) page_token = parsed_response['data'].get('page_token') if not page_token: break return {'data': {'items': all_records}} # 封装一个美观输出的样式并只过滤需要发布的信息 @classmethod def print_highlighted_json(cls, data, indent=4, ensure_ascii=False, sort_keys=True, style="solarized-dark"): """ 改进后的高亮JSON输出方法 """ formatted_json = json.dumps( data, indent=indent, ensure_ascii=ensure_ascii, # 保留中文显示 sort_keys=sort_keys ) # 生成带颜色代码的字符串 highlighted = highlight( formatted_json, JsonLexer(), # JSON词法分析器 Terminal256Formatter(style=style) # 终端兼容格式 ) print(highlighted) # 直接输出到控制台 @classmethod def filter_export_excel(cls, data, filter_key="发布", filter_value="是", output_prefix="filtered_data"): """ 新增数据过滤导出方法 参数: data: 原始JSON数据 filter_key: 过滤键名(默认"发布") filter_value: 过滤键值(默认"是") output_prefix: 输出文件名前缀 """ try: # 提取需要处理的数据层级(根据飞书数据结构调整) records = data.get('data', {}).get('records', []) # 过滤符合条件的记录 filtered = [ record for record in records if record.get(filter_key) == filter_value ] if not filtered: print("未找到匹配数据") return # 生成带时间戳的文件名 timestamp = datetime.now().strftime("%Y%m%d_%H%M%S") filename = f"{output_prefix}_{timestamp}.xlsx" # 转换为DataFrame并保存 df = pd.DataFrame(filtered) df.to_excel(filename, index=False, engine='openpyxl') print(f"成功导出到文件:{filename}") except Exception as e: print(f"导出失败:{str(e)}") if __name__ == "__main__": table = FeishuTable records_ids = table.getRecordsId() # 生成格式化JSON字符串 formatted_json = table.print_highlighted_json(records_ids) # 导出过滤数据 FeishuTable.filter_export_excel(records_ids,filter_key="发布",filter_value="是") 报错了,帮我修一下
最新发布
03-13
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值