海胆洗澡的赖皮蛇 2022-09-05 19:35 采纳率: 90.9%
浏览 14
已结题

跟着教程爬股票信息,显示TypeError

问题遇到的现象和发生背景
跟着教程爬股票信息,显示TypeError
问题相关代码,请勿粘贴截图


import requests
import re
from bs4 import BeautifulSoup
import traceback
 
def getHTMLText():
    try:
        r = requests.get(url, timeout=30)
        r.raise_for_status()
        r.encoding = r.apparent_encoding
        return r.text
    except:
        return ""
 
def getStockList(lst, stockURL):#获得股票列表
    html = getHTMLText(stockURL)
    soup = BeautifulSoup(html, 'html.parser')
    a = soup.find_all('a')
    for i in a:
        try:
            href = i.attrs['href']
            lst.append(re.findall(r"[s][hz]\d{6}", href)[0])  #以s开头,中间是h(上海股市)或z(深圳股市)字符
        except:
            continue
 
 
def getStockInfo(lst, stockURL, fpath):
    for stock in lst:
        url = stockURL + stock + ".html"
        html = getHTMLText(url)
        try:  
            if html == "": 
                continue
            infoDict = {} #定义字典
            soup = BeautifulSoup(html, 'html.parser') #用bs库构建一个解析网页的类型
            stockInfo = soup.find('div', attrs={'class':'stock-bets'})  #所有的股票信息都封存在div标签中,进一步在标签中查找的第一个内容是股票名称,它封装在bets-name的属性的对应的标签内
 
            name = stockInfo.find_all(attrs={'class':'bets-name'})[0]
            infoDict.update({'股票名称':name.text.split()[0]}) #使用split函数来获得股票对应名称的完整部分
 
            #所有的股票信息都存储在dd和dt的标签中,dt标签是表明属性信息的键的域,dd标签表明的是股票信息的值的域。可以用findall的方法找到所有的键的区域和所有值的区域
            keyList = stockInfo.find_all('dt')
            valueList = stockInfo.find_all('dd')
 
            #下面对键值对列表赋值,将它们对还原为键值对并存在字典中
            for i in range(len(keyList)):
                key = keyList[i].text
                val = valueList[i].text
                infoDict[key] = val
           
 
            #保存文件
            with open(fpath, 'a', encoding='utf-8') as f:
                f.write(str(infoDict) + '\n')
 
        except:
            traceback.print_exc()
            continue
 
 
def main():
    stock_list_url = 'http://quote.eastmoney.com/stocklist.html' #股票链接
    stock_info_url = 'https://gupiao.baidu.com/stock/' #获取股票链接的主体部分
    outpuut_file = 'E://BaiduStockInfo.txt' #保存在E盘的根目录下
    slist = []
    getStockList(slist, stock_list_url)#获取股票列表
    getStockInfo(slist, stock_info_url, outpuut_file)#将获取到的信息存储在相关文件中
 
main()
 

运行结果及报错内容
TypeError: getHTMLText() takes 0 positional arguments but 1 was given
我的解答思路和尝试过的方法

我想要达到的结果

  • 写回答

2条回答 默认 最新

  • 老衲要还俗娶婆娘 2022-09-05 21:10
    关注
    
    def getHTMLText(url):
        try:
            r = requests.get(url, timeout=30)
            r.raise_for_status()
            r.encoding = r.apparent_encoding
            return r.text
        except:
            return ""
    

    ** getHTMLText(url):**少了个参数,加上去就好了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 12月29日
  • 已采纳回答 12月29日
  • 创建了问题 9月5日

悬赏问题

  • ¥15 远程访问linux主机超时
  • ¥15 odoo17存货管理优势于中国国内该行业传统ERP或MES的详细解读和举例
  • ¥15 CPU卡指令整合指令数据都在图片上
  • ¥15 火车票关联12306问题
  • ¥15 odoo17处理受托加工产品
  • ¥15 如何用MATLAB编码图三的积分
  • ¥15 圆孔衍射光强随孔径变化
  • ¥15 MacBook pro m3max上用vscode运行c语言没有反应
  • ¥15 ESP-PROG配置错误,ALL ONES
  • ¥15 结构功能耦合指标计算