猿问

抓取两种类型的 URL

在此页面中,在“依赖项”列表下有两种类型的 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 比较陌生,不知道正则表达式,所以我对如何解决这个问题有点困惑。如果有人能告诉我解决这个问题的方法,我会很高兴。


谢谢


收到一只叮咚
浏览 95回答 1
1回答
随时随地看视频慕课网APP

相关分类

Python
我要回答