You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python网页爬虫无法遍历URL令牌列表问题求助

问题排查与修复

核心问题

你的tokenize函数逻辑错误:

  • 函数接收的参数t是tokens列表中的单个字符串(比如"after=MA%3D%3D")
  • 函数里for y in t是遍历这个字符串的每个字符,然后第一次循环就return y,也就是每次只返回字符串的第一个字符
  • 这导致每次请求的参数都是错误的(比如第一个token返回空格,第二个返回'a'),服务器无法识别分页参数,默认返回第一页数据,所以重复爬取11次第一页

另外注意最后一个token里的$3D%3D是错误的,应该是%3D%3D(URL编码的等号),这个错误会导致最后一页请求失败,需要修正。

修复方案

直接移除多余的tokenize函数,在循环中把列表里的每个token直接传入main_request即可,同时修正最后一个token的错误符号。

修改后的完整代码

import requests
import pandas as pd

baseurl = "https://www.rottentomatoes.com/napi/critics/"
endpoint = "alison-willmore/movies?"

# 修正最后一个token的错误符号
tokens = [" ", "after=MA%3D%3D", "after=MQ%3D%3D", "after=Mg%3D%3D", "after=Mw%3D%3D", "after=NA%3D%3D",
          "after=NQ%3D%3D", "after=Ng%3D%3D", "after=Nw%3D%3D", "after=OA%3D%3D", "after=OQ%3D%3D"]

def main_request(baseurl, endpoint, x):
    r = requests.get(baseurl + endpoint + f'{x}')
    return r.json()

reviews = []

def parse_json(response):
    for item in response["reviews"]:
        review_info = {
            'film_title': item["mediaTitle"],
            'release_year': item["mediaInfo"],
            'full_review_url': item["url"],
            'review_date': item["date"],
            'rt_quote': item["quote"],
            'film_info_link': item["mediaUrl"]}
        reviews.append(review_info)

# 直接传入每个token,不需要tokenize函数
for t in tokens:
    data = main_request(baseurl, endpoint, t)
    parse_json(data)

print(len(reviews))

d_frame = pd.DataFrame(reviews)
print(d_frame.head(), d_frame.tail())

内容的提问来源于stack exchange,提问作者ESan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 04:15:25