Python 3.5 - 如何对javascript呈现的页面进行webscraping

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python 3.5 - 如何对javascript呈现的页面进行webscraping相关的知识,希望对你有一定的参考价值。

我正在尝试使用python 3和webdriver提取一个javascript渲染表。

我的代码如下:

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

# Create a new instance of the Firefox driver
driver = webdriver.Firefox()
driver.get("http://esploracolfis.sns.it/EsploraCoLFIS/#!0:t=L&l=1;1:r=T")
driver.refresh()
# Wait for the dynamically loaded elements to show up
WebDriverWait(driver, 10).until(
    EC.visibility_of_element_located((By.TAG_NAME, "table")))

# And grab the page HTML source
html = driver.page_source
driver.quit()
print(html)

现在,当我打印身体时,我的打印中不存在javascript渲染的内容。我怎样才能提取我想要的表格(表格的整个html代码)?

非常感谢你

答案

我为解决您的问题所做的是使用Beautifulsoup库来解析源代码。

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

import bs4

# Create a new instance of the Firefox driver
driver = webdriver.Firefox()
driver.get("http://esploracolfis.sns.it/EsploraCoLFIS/#!0:t=L&l=1;1:r=T")
driver.refresh()
# Wait for the dynamically loaded elements to show up
WebDriverWait(driver, 10).until(
    EC.visibility_of_element_located((By.TAG_NAME, "table")))

# And grab the page HTML source
html = driver.page_source

# Turns html into a beautifulsoup object
bs4_html = bs4.BeautifulSoup(html, 'lxml')

# Finds the table
table = bs4_html.find_all('table')

driver.quit()

print(table)

控制台输出一英里长,所以我不能把它放在这里。

希望有所帮助!

以上是关于Python 3.5 - 如何对javascript呈现的页面进行webscraping的主要内容,如果未能解决你的问题,请参考以下文章

如何让 python3 命令运行 Python 3.6 而不是 3.5?

如何在我的虚拟环境中使用 Python 3 (3.5) 作为默认解释器?

如何使用 Python 2.7 创建 Python 3.5 虚拟环境?

如何导致 Python 3.5 崩溃?

Python 3.5新特性都有些什么

给定python 3.5中模块的完整路径,如何导入模块? [复制]