在此页面中,在“依赖项”列表下有两种类型的 url。其中一个来自官方软件包站点(“ https://archlinux.org/packages/ ”),另一个来自用户软件包网站(“ https://aur.archlinux.org/packages/ ”)。我想将它们提取为一个单独的列表。根据这个 BeautifulSoup 的文档,到目前为止我想出了这样的东西:
sauce = urllib.request.urlopen("https://aur.archlinux.org/packages/blockify/").read()
soup = bs.BeautifulSoup(sauce, 'lxml')
official_dependencies = []
aur_dependencies = []
for h3 in soup.find_all('h3'):
if "Dependencies" in h3.text:
for url in h3.find_all_next('a', attrs={'href': re.compile("^https://www.archlinux.org/packages/")}):
official_dependencies.append(url.get('href'))
这对我的第一个目标很有效。但我不确定我应该如何提取黄色葡萄球菌的依赖,因为他们href是一样的东西/packages/package_name/,而不是https://aur.archlinux.org/packages/package_name/。而且,在官方包名称旁边的括号中还写了一些 aur 依赖项。例如,alsa-utils (alsa-utils-transparent)。我想避免刮掉那些替代的 aur 包。
我对 bs4 比较陌生,不知道正则表达式,所以我对如何解决这个问题有点困惑。如果有人能告诉我解决这个问题的方法,我会很高兴。
谢谢
相关分类