Beautiful Soup / urllib 不读取一些 HTML 标签

Beautiful Soup / urllib does not read some HTML tags

我最近开始使用 Beautiful Soup。作为练习,我正在尝试抓取 this website

有一些 div 标签爬虫似乎无法访问,甚至 URL reader 似乎也无法读取这些 div 标签. HTML 并不表示它正在对未被读取的部分使用 JavaScript,因此理论上我认为不需要 Selenium。具体来说,名为 "ajaxTarget" 的 ID 下的 div 标签是值得关注的问题。下面的代码 returns 一些元素,但是这个特定标签下的大多数 div 标签没有被读取。

from urllib.request import Request, urlopen
from bs4 import BeautifulSoup

def main():
    url_link = 'https://www.countryflags.com/en/'
    req = Request(url_link, headers={'User-Agent': 'Mozilla/5.0'})
    page = urlopen(req).read()
    soup = BeautifulSoup(page, features='lxml')
    div_master_container = soup.findAll('div', attrs={'id': 'ajaxTarget'})
    print(len(div_master_container))
    for item in div_master_container:
        print(item)

if __name__ == '__main__':
    main()

如果有人能指出 HTML 中是否有我遗漏的元素或导致此问题的任何其他因素,我将不胜感激。

Javascript 需要在页面上 运行。使用像 selenium

这样的方法
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
url ='https://www.countryflags.com/en/'
driver = webdriver.Chrome()
driver.get(url)
items = [[item.get_attribute('href'),item.get_attribute('title')] for item in WebDriverWait(driver,30).until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, "#ajaxTarget [title]")))]
print(items)
print(len(items))
#driver.quit()