Я пытаюсь выяснить соотношение внутренних ссылок определенного веб-сайта, рассчитав общее количество внутренних ссылок на общее количество ссылок на веб-странице. Если это соотношение> = 0,5, оно вернет -1, в противном случае будетreturn 1.
def get_domain_name(url):
splitted = urlparse(url).hostname.split('.')
return splitted[-2] + '.' + splitted[-1]
def internal_link(url):
icount = 0
count = 0
base_domain_name = get_domain_name(url)
page = requests.get(url)
soup = BeautifulSoup(page.content,'html.parser')
href_links = soup.find_all('a',href=True)
for link in href_links:
count = count + 1
child_domain_name = get_domain_name(link)
if child_domain_name == base_domain_name:
icount = icount + 1
if count != 0 :
ilink_ratio = icount/count
#elink_ratio = 1 - ilink_ratio
else:
ilink_ratio = 0
if ilink_ratio >= 0.5:
return -1
else:
return 1
ans = internal_link('https://www.google.com')
print(ans)
мой ожидаемый результат будет либо 1, либо -1, но я получаю
ans = internal_link('https://www.google.com')
Traceback (most recent call last):
File "<ipython-input-76-aa8cd733497f>", line 1, in <module>
ans = internal_link('https://www.google.com')
File "<ipython-input-75-36aae0789101>", line 17, in internal_link
child_domain_name = get_domain_name(link)
File "<ipython-input-75-36aae0789101>", line 2, in get_domain_name
splitted = urlparse(url).hostname.split('.')
File "C:\Users\Dell\Anaconda3\lib\urllib\parse.py", line 367, in urlparse
url, scheme, _coerce_result = _coerce_args(url, scheme)
File "C:\Users\Dell\Anaconda3\lib\urllib\parse.py", line 123, in _coerce_args
return _decode_args(args) + (_encode_result,)
File "C:\Users\Dell\Anaconda3\lib\urllib\parse.py", line 107, in _decode_args
return tuple(x.decode(encoding, errors) if x else '' for x in args)
File "C:\Users\Dell\Anaconda3\lib\urllib\parse.py", line 107, in <genexpr>
return tuple(x.decode(encoding, errors) if x else '' for x in args)
File "C:\Users\Dell\Anaconda3\lib\site-packages\bs4\element.py", line 1181, in decode
indent_space = (' ' * (indent_level - 1))
TypeError: unsupported operand type(s) for -: 'str' and 'int'