python - BeautifulSoup - 如何遍历 "tr"标签?

标签 python html beautifulsoup

我正在尝试遍历此 BeerAdvocate 页面 ( https://www.beeradvocate.com/beer/styles/35/ ) 以获取啤酒名称、酒精度数、评级等信息。但是,我不确定如何构建一个循环来遍历整个页面。
例如,我对啤酒名称的处理如下:

import requests
from bs4 import BeautifulSoup
url = "https://www.beeradvocate.com/beer/styles/35/"
results = requests.get(url) 

soup = BeautifulSoup(requests.get(url).content, 'html.parser')
beer_name = []

beer_div = soup.find_all('div',id='ba-content')

for container in beer_div:

#beer name
name = container.find_all('a')[12].text
beer_name.append(name)

print(beer_name)  
有谁知道我在这里做错了什么?
谢谢!
enter image description here

最佳答案

首先识别table ,然后找到所有 tr table 中的标签,然后循环遍历 tr标签来打印文本。

beer_table = soup.find('table')

tr_tags = beer_table.find_all('tr')[3:]

for tr in tr_tags:
    beer_name.append(tr.td.text)

beer_name = beer_name[:-1]

print(beer_name)
输出:
['Ayinger Celebrator', 'Troegenator', 'Spaten Optimator', 'Salvator', 'Korbinian', 'Samichlaus Classic Bier', 'Samuel Adams Double Bock (Imperial Series)', 'Consecrator', 'Andechser Doppelbock Dunkel', 'Birra Moretti La Rossa', 'Perkulator Coffee Dopplebock', 'EKU 28', 'Liberator Doppelbock', 'Augustiner Bräu Maximator', "Smuttynose S'muttonator (Heritage Series)", 'Butthead Doppelbock', 'Autumnal Fire', 'Weltenburger Kloster Asam-Bock', 'Wasatch The Devastator Double Bock', 'St. Victorious', 'Urbock 23°', 'Voodoovator', 'Saxonator Dunkles Doppelbock', 'Doppel-Hirsch', 'Josephs Brau Winter Brew', 'Duck-Rabbator', 'Troegenator - Bourbon Barrel-Aged', 'Ettaler Curator Dunkler Doppelbock (US Import Version)', 'Blonde Doppelbock', 'Snow Blind Doppelbock', 'Doppelbock Dunkel', 'Tucher Bajuvator Doppelbock', 'Dark Heathen Triple Bock', 'Winter Bock', 'Deep Water Dopplebock', 'Doppelbock Grande Cuvée Printemps', 'Lobotomy Bock', 'Sled Dog Dopplebock', 'Primátor Double Bock Beer', 'Icelandic Doppelbock', 'Dopple Bock', "St. Nikolaus Bock Bier - Brewer's Reserve", 'Double Skull', 'Emancipator Doppelbock', 'Winter-Bock', 'Granitbock', "Henry's Farm Double Bock", 'Double Vision Doppelbock', 'Massacre', "Fireman's Brew Brunette Beer"]
这是完整的代码:
import requests
from bs4 import BeautifulSoup
url = "https://www.beeradvocate.com/beer/styles/35/"
results = requests.get(url)

soup = BeautifulSoup(results.content, 'html.parser')
beer_name = []

beer_table = soup.find('table')

tr_tags = beer_table.find_all('tr')[3:]

for tr in tr_tags:
    beer_name.append(tr.td.text)

beer_name = beer_name[:-1]

print(beer_name)
希望这会有所帮助!

关于python - BeautifulSoup - 如何遍历 "tr"标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64291746/

相关文章:

javascript - 为 Javascript 中的推特按钮动态更新数据文本

java - 用于查找 <link rel ="stylesheet"标签的正则表达式

javascript - 向文本子字符串添加新元素

python - BeautifulSoup 汉字编码错误

python - 我在为 python 安装 pdftotext 时遇到困难

html - 无法居中

python - 从 python 中的共享库返回的数组 - 这是内存泄漏吗?

Python - 使用 BeautifulSoup 迭代页面

python - request() 得到了一个意外的关键字参数 'json'

python - 如何在 python 中将点更改为轴上的逗号