Python 3.x Beauty Soup/urllib不读取某些HTML标记

Python 3.x Beauty Soup/urllib不读取某些HTML标记,python-3.x,web-scraping,beautifulsoup,urllib,Python 3.x,Web Scraping,Beautifulsoup,Urllib,我最近开始用漂亮的汤。为了练习,我正在努力刮 有些div标记是scraper无法访问的,甚至URL阅读器似乎也无法读取这些div标记。HTML并不表示它正在使用JavaScript处理未被读取的部分,因此理论上我假设不需要Selenium。具体来说,关注的是名为“ajaxTarget”的ID下的div标记。下面的代码返回一些元素,但此特定标记下的大多数div标记都不会被读取 从urllib.request导入请求,urlopen 从bs4导入BeautifulSoup def main(): 链

我最近开始用漂亮的汤。为了练习,我正在努力刮

有些div标记是scraper无法访问的,甚至URL阅读器似乎也无法读取这些div标记。HTML并不表示它正在使用JavaScript处理未被读取的部分,因此理论上我假设不需要Selenium。具体来说,关注的是名为“ajaxTarget”的ID下的div标记。下面的代码返回一些元素,但此特定标记下的大多数div标记都不会被读取

从urllib.request导入请求,urlopen
从bs4导入BeautifulSoup
def main():
链接https://www.countryflags.com/en/'
请求(url_链接,标题={'User-Agent':'Mozilla/5.0'})
page=urlopen(req).read()
soup=BeautifulSoup(第页,features='lxml')
div_master_container=soup.findAll('div',attrs={'id':'ajaxTarget'})
打印(透镜(分区主容器))
对于div_master_容器中的项目:
打印(项目)
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
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()

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()

尝试获取相同的静态内容。尝试获取相同的静态内容。我看到了我犯的错误。我用了硒,效果很好。谢谢。我明白我犯的错误了。我用了硒,效果很好。谢谢