【发布时间】:2020-01-07 07:30:11
【问题描述】:
我正在尝试编写一个脚本来找出 python 中网页的无响应链接。在尝试时,我发现 python 不支持多子节点。这是真的吗?或者我们可以访问多个子节点。
下面是我的代码sn-p:
import httplib2
import requests
from bs4 import BeautifulSoup, SoupStrainer
status = {}
response = {}
output = {}
def get_url_status(url, count):
global links
links = []
print(url)
print(count)
if count == 0:
return output
else:
# if url not in output.keys():
headers = requests.utils.default_headers()
req = requests.get(url, headers)
if('200' in str(req)):
# if url not in output.keys():
output[url] = '200';
for link in BeautifulSoup(req.content, parse_only=SoupStrainer('a')):
if 'href' in str(link):
links.append(link.get('href'))
# removing other non-mandotary links
for link in links[:]:
if "mi" not in link:
links.remove(link)
# removing same url
for link in links[:]:
if link.rstrip('/') == url:
links.remove(link)
# removing duplicate links
links = list(dict.fromkeys(links))
if len(links) > 0:
for urllink in links:
return get_url_status(urllink, count-1)
result = get_url_status('https://www.mi.com/in', 5)
print(result)
在这段代码中,它只遍历子节点的左节点并跳过休息。像这样的东西。
而且输出并不令人满意,与实际相比非常少。
{'https://www.mi.com/in': '200', 'https://in.c.mi.com/': '200', 'https://in.c.mi.com/index.php': '200', 'https://in.c.mi.com/global/': '200', 'https://c.mi.com/index.php': '200'}
我知道,我在多个地方都缺乏,但我从来没有做过这种规模的事情,这是我第一次。如果这是一个新手问题,请原谅。
注意:我使用 mi.com 仅供参考。
【问题讨论】:
标签: python python-3.x list python-2.7 tree