功能缺失2需要的位置参数:' url'和'列出'

时间:2018-01-19 08:16:23

标签: python beautifulsoup python-requests

我试图编写一个python脚本来获取特定网页中使用的网址数量:

TypeErrorTraceback (most recent call last)
<ipython-input-7-a3136853c4b2> in <module>()
 30     return no_use
 31 
 32 print(mining_webpage())
TypeError: mining_webpage() missing 2 required positional arguments: 'url' and 'list'

这是代码:

from bs4 import BeautifulSoup as bs 
import requests
import re
import pandas as pd
import matplotlib as plt

def mining_webpage(url,list):
   '''Finds the howmany websites are used in the webpage and counts its total number'''
    reallink=[]
    tokens=[]
    list1=[]
    no_use={}
    link=url
    word_list=list
    text=requests.get(link).text
    soup=bs(text)
    for l in soup.find_all(href=re.compile('https')):
        reallink.append(l.get('href').split('//'))
    for lists in reallink:
        '''print(lists[-1])'''
        list1.append(lists[-1].split('.'))
    '''print(list1)'''
    for l in list1:
        tokens.append(l[-2])
    for word in tokens:
        if word in no_use.keys():
            no_use[word]+=1     
        else:
            no_use[word]=1
    return no_use
print(mining_webpage())

我知道这可能有一个简单的解决方案,但我真的无法弄清楚我做错了什么,这就是我写给练习的内容。

1 个答案:

答案 0 :(得分:0)

在这种情况下,错误消息本身就是不言自明的:

TypeError: mining_webpage() missing 2 required positional arguments: 'url' and 'list'

您已经创建了一个新功能mining_webpage,需要两个参数urllist。这意味着每次调用它时,都需要传递两个参数。例如。

my_list = []
print(mining_webpage('http://stackoverflow.com', my_list))

或者,您可能希望重新定义mining_webpage以使其占用更少的参数,或者如果使用比预期更少的参数调用函数,则将使用默认值。默认值的示例可能如下所示:

from bs4 import BeautifulSoup as bs
...
import matplotlib as plt

def mining_webpage(url='http://stackoverflow.com', list=None):
   '''Finds the howmany websites are used in the webpage and counts its total number'''
    reallink=[]
    ...

当然,如果有&#34;默认&#34;那么以这种方式设置默认值才有意义。您希望经常使用的值。

最后一点,list实际上用于任何事情并不明显,我真的完全避免调用任何变量list,因为这是已经在Python标准库(https://docs.python.org/3/library/functions.html#func-list)中定义。第二个参数似乎被用作新变量word_list的赋值中的值,然后再从不再引用它。