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

使用HTMLSession时遇TypeError:get()缺少必选参数'url'的技术问询

问题排查与解决

核心错误原因

你遇到的TypeError: get() missing 1 required positional argument: 'url',根源是HTMLSession类未实例化:

# 错误写法:仅赋值类,未创建实例
session=HTMLSession
# 正确写法:加括号生成类实例
session=HTMLSession()

get()是HTMLSession的实例方法,必须通过类的实例调用。直接用类调用时,Python会把你传入的url当作实例方法的第一个参数self,导致实际缺少url参数,触发报错。

其他潜在问题与修正

除核心错误外,代码还有几处逻辑和语法问题,一并修正:

  • Allpage函数逻辑错误:原代码判断下一页的条件写反,且未处理分页容器不存在的情况,会触发AttributeError;拼接url时错误地将BeautifulSoup对象转为字符串操作,应直接用对象方法处理。
  • 循环终止逻辑缺失:当没有下一页时,Allpage返回None,此时需终止循环,否则会调用data(None)引发新错误。
  • 变量大小写错误:最后一行print(URL)应为print(url),Python对大小写敏感。

修正后的完整代码

from requests_html import HTMLSession
from bs4 import BeautifulSoup
import requests 

# 实例化HTMLSession
session = HTMLSession()
url = "https://pureportal.coventry.ac.uk/en/organisations/coventry-university/publications/"

def data(url):
    # 通过实例调用get方法
    r = session.get(url)
    r.html.render(sleep=1)
    soup = BeautifulSoup(r.html.html, "html.parser")
    return soup

def Allpage(soup):
    # 先获取分页容器,处理不存在的情况
    pagination = soup.find("ul", {"class":"pagination"})
    if not pagination:
        return None
    # 查找下一页按钮
    next_page = pagination.find("li", {"class": "next"})
    if next_page:
        # 直接提取下一页的链接
        next_href = next_page.find("a")["href"]
        # 拼接完整URL
        return f"https://pureportal.coventry.ac.uk{next_href}"
    else:
        # 无下一页时返回None
        return None

while True:
    getdata = data(url)
    url = Allpage(getdata)
    print(url)
    # 无下一页时终止循环
    if not url:
        break

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 05:30:53