问题:当本地html文件中的元素都是由js生成时,我们无法通过beautifulsoup进行解析。
思路:
1.通过webdriver的无头浏览器,不在桌面打开浏览器的情况下,通过浏览器引擎加载html文件
2.获取浏览器的页面资源
3.将资源输出到另一个html2文件中,就获得了js加载完成后html了
4.beautifulsoup解析html2文件,即可
上代码:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from bs4 import BeautifulSoup
def loadHtml(file_path):
# 添加无头浏览器选项
chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_driver = webdriver.Chrome(chrome_options=chrome_options)
# 加载原html资源,运行html文件中的js,生成相应元素
chrome_driver.get(file_path)
# 获取js生成后的页面资源
html_source = str(chrome_driver.page_source)
chrome_driver.close()
return html_source
def getElementByAttrs(html_source, attrs):
bs = BeautifulSoup(html_source,"