BeautifulSoup无法找到所有标记

2024-05-16 19:32:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我的目标是从我想刮的链接中获取特定标签的数量。我手动检查了标签的数量,我的代码找不到所有的标签。在

我试过不同的解析器,比如html.parser“html5lib”和“lxml”,但每次都会出现错误。在

我的代码:

from bs4 import BeautifulSoup
from selenium import webdriver
urls = ["http://www.basket.fi/sarjat/ottelu/?game_id=3502579&season_id=93783&league_id=4#mbt:2-400$t&0=1",
"http://www.basket.fi/sarjat/ottelu/?game_id=3502523&season_id=93783&league_id=4#mbt:2-400$t&0=1",
"http://www.basket.fi/sarjat/ottelu/?game_id=3502491&season_id=93783&league_id=4#mbt:2-400$t&0=1",
"http://www.basket.fi/sarjat/ottelu/?game_id=3502451&season_id=93783&league_id=4#mbt:2-400$t&0=1",
"http://www.basket.fi/sarjat/ottelu/?game_id=3502395&season_id=93783&league_id=4#mbt:2-400$t&0=1",
"http://www.basket.fi/sarjat/ottelu/?game_id=3502407&season_id=93783&league_id=4#mbt:2-400$t&0=1"]

for url in urls:
    browser = webdriver.PhantomJS()
    browser.get(url)
    table = BeautifulSoup(browser.page_source, 'lxml')
    print(len(table.find_all("tr", {"class":["row1","row2"]})))

输出:

^{pr2}$

目标输出:

88
86
87
87
86
83

Tags: browseridgamehttp目标数量www标签
1条回答
网友
1楼 · 发布于 2024-05-16 19:32:56

我基本上只是在你的代码中添加了一个延迟线。这有助于程序等到网页完全加载并准备好使用BS4进行解析。在

还请注意,我的输出与您的目标输出不同。但是我仔细检查了每个url上包含“row1”和“row2”的“tr”的数量,似乎我的输出是准确的(也许在您发布问题之后,网站上的结果有点变化)。在

代码:

import time
from bs4 import BeautifulSoup
from selenium import webdriver

urls = ["http://www.basket.fi/sarjat/ottelu/?game_id=3502579&season_id=93783&league_id=4#mbt:2-400$t&0=1",
"http://www.basket.fi/sarjat/ottelu/?game_id=3502523&season_id=93783&league_id=4#mbt:2-400$t&0=1",
"http://www.basket.fi/sarjat/ottelu/?game_id=3502491&season_id=93783&league_id=4#mbt:2-400$t&0=1",
"http://www.basket.fi/sarjat/ottelu/?game_id=3502451&season_id=93783&league_id=4#mbt:2-400$t&0=1",
"http://www.basket.fi/sarjat/ottelu/?game_id=3502395&season_id=93783&league_id=4#mbt:2-400$t&0=1",
"http://www.basket.fi/sarjat/ottelu/?game_id=3502407&season_id=93783&league_id=4#mbt:2-400$t&0=1"]

for url in urls:
    driver = webdriver.Chrome()
    driver.get(url)
    time.sleep(10)
    table = BeautifulSoup(driver.page_source, 'lxml')
    print(len(table.find_all("tr", {"class":["row1","row2"]})))

输出:

^{pr2}$

相关问题 更多 >