我如何才能从html页面中找到美丽汤的每个链接作为一个字符串?(这个网站的findAll功能不好找)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我如何才能从html页面中找到美丽汤的每个链接作为一个字符串?(这个网站的findAll功能不好找)相关的知识,希望对你有一定的参考价值。

我想添加所有Dota2英雄的名字;他们以链接的形式出现,从 https:/dota2.gamepedia.comAbaddonCounters。 成一个列表。

这是我的测试代码。

from bs4 import BeautifulSoup as soup
from urllib.request import urlopen as uReq

my_url = 'https://dota2.gamepedia.com/Abaddon/Counters'
print(Child_url+hero_link_list[0])
uClient = uReq(my_url)
page_html = uClient.read()
page_soup = soup(page_html, "html.parser")
containers = page_soup.findAll("div", "class": "mw-parser-output")

print(containers)

但是,在打印容器变量后,这个 div 标签下的几乎所有信息都不见了,只添加了一些注释。我不知道为什么会发生这种情况。

答案

这个脚本将打印所有这里的名字。

import requests
from bs4 import BeautifulSoup

url = 'https://dota2.gamepedia.com/Abaddon/Counters'
soup = BeautifulSoup(requests.get(url).content, 'html.parser')

all_heros = [a.text for a in soup.select('b > a')]

#print them:
print(*all_heros, sep='\n')

打印:

Ancient Apparition
Axe
Brewmaster
Doom
Lina
Lion
Mars
Outworld Devourer
Silencer
Shadow Demon
Death Prophet
Mirana
Bane
Batrider
Beastmaster
Chen
Techies
Bloodseeker
Necrophos
Nyx Assassin
Storm Spirit
Phantom Assassin
Io
Axe
Legion Commander
Centaur Warrunner
Oracle

EDIT (要刮取类别,你可以使用 .find_previous() 函数)。)

import requests
from bs4 import BeautifulSoup

url = 'https://dota2.gamepedia.com/Abaddon/Counters'
soup = BeautifulSoup(requests.get(url).content, 'html.parser')

data = 
for hero in soup.select('b > a'):
    data.setdefault(hero.find_previous(class_='mw-headline').text, []).append(hero.text)

#print them:
from pprint import pprint
pprint(data)

打印:

'Bad against...': ['Ancient Apparition',
                    'Axe',
                    'Brewmaster',
                    'Doom',
                    'Lina',
                    'Lion',
                    'Mars',
                    'Outworld Devourer',
                    'Silencer',
                    'Shadow Demon'],
 'Good against...': ['Death Prophet',
                     'Mirana',
                     'Bane',
                     'Batrider',
                     'Beastmaster',
                     'Chen',
                     'Techies',
                     'Bloodseeker',
                     'Necrophos',
                     'Nyx Assassin'],
 'Works well with...': ['Storm Spirit',
                        'Phantom Assassin',
                        'Io',
                        'Axe',
                        'Legion Commander',
                        'Centaur Warrunner',
                        'Oracle']

以上是关于我如何才能从html页面中找到美丽汤的每个链接作为一个字符串?(这个网站的findAll功能不好找)的主要内容,如果未能解决你的问题,请参考以下文章

解析美丽汤后原始网页上的链接丢失

在美丽的汤中找到下一个 div 标签

如何从 HTML 页面中提取链接?

如何使用美丽的汤从 kick starter 中获取以下数据?

美丽的汤 CSS 选择器没有找到任何东西

如何在带有 BS4 的 HTML 代码中找到这个通用标签(美丽的汤)