from selenium import webdriver
import clipboard
driver = webdriver.Chrome()
driver.get("http://reference.wolfram.com/language/ref/BarChart.html")
#get all the image elements
elem: = driver.find_elements_by_tag_name("img")
#click and paste
text_list = []
for elem in elems:
#clicking on the image element
elem.click()
#get text from clipboard
text = clipboard.paste()
#check if text is empty
if text != "":
text_list.append(text)
虽然这可能有点过分,但您可以使用selenium,基本上自动执行鼠标单击操作,并使用剪贴板包将复制的文本返回到Python中。大致的想法是:
正如我所说的,这可能不是最好的方法,您可以查看网站上的
clipboard.js
文件来检查是否有一个简单的方法。希望有帮助如果您在与页面交互时查看浏览器的开发工具,您将看到将鼠标悬停在其中一个图像/文本元素上会请求加载该元素的文本。因此,您必须为每个文本发出一个请求才能获得所有这些值。url都是这样的:http://reference.wolfram.com/language/ref/Files/BarChart.en/i_5.txt
因此,首先,您应该找到一种生成所有这些请求的方法。看起来它们都是奇数(
i_1.txt
,i_3.txt
,等等),它们与div
的id相对应但是这些并不能给你很好看的文本,它有很多标记,文本被转义了:
正如一些人所指出的,
clipboard.js
是启动和处理这些请求的javascript所在。您可以通过检查元素的事件监听器或通过跟踪请求的发起程序堆栈来实现。这有一些行可以用来编写一个Python函数来清除它们。有一个名为PyQuery(docs)的库,它允许您在HTML上使用类似jQuery的选择器,这样可以加快速度相关问题 更多 >
编程相关推荐