![]() |
1
218
编辑2017年12月30日:这个答案出现在谷歌搜索的最热门结果中,所以我决定更新它。旧的答案还在后面。
一旦你安装了
Phantom JS
,确保
例子举个例子,我用下面的HTML代码创建了一个示例页面。( link
使用JS支持进行刮除:
dryscrape 抓取javascript驱动的网站。 使用JS支持进行刮除:
|
![]() |
2
86
我们没有得到正确的结果,因为任何javascript生成的内容都需要在DOM上呈现。当我们获取一个HTML页面时,我们获取初始的、未被javascript修改的DOM。 因此,我们需要在抓取页面之前呈现javascript内容。 由于selenium在这个线程中已经被多次提到(有时也提到它有多慢),我将列出另外两种可能的解决方案。 解决方案1: how to use Scrapy to crawl javascript generated content 我们将遵循这一点。 我们需要:
解决方案2:
我们现在就称之为实验性的(2018年5月)。。。
你知道
requests
模块(谁不呢)?
最后,这个模块似乎提供了
scraping capabilities
.
|
![]() |
3
52
selenium 我能做到。
|
![]() |
4
24
如果你用过
您也可以访问 https://html.python-requests.org/ 要了解有关此模块的更多信息,或者如果您只对呈现JavaScript感兴趣,则可以访问 https://html.python-requests.org/?#javascript-support 直接学习如何使用模块使用Python呈现JavaScript。
我最近从YouTube视频上了解到了这一点。 Click Here! 观看演示模块工作原理的YouTube视频。 |
![]() |
5
15
|
![]() |
6
15
这似乎也是一个很好的解决方案,从 great blog post
|
![]() |
7
12
Selenium最适合于抓取JS和Ajax内容。 extracting data from the web using Python
很简单,对吧? |
|
8
8
您还可以使用webdriver执行javascript。
|
![]() |
9
8
我个人更喜欢使用刮痧和硒和码头都在不同的容器。通过这种方式,您可以以最小的麻烦安装,也可以对几乎都以某种形式包含javascript的现代网站进行爬网。举个例子:
使用
不要忘记通过取消注释设置.py文件:
接下来是dockerization。创建您的
跑
完成后,您可以检查您的容器是否正在运行
输入刮板容器
整个东西都在我的github页面上,你可以从 here |
![]() |
10
6
美丽素和硒的混合对我很有效。
P、 你可以找到更多的等待条件 here |
![]() |
11
4
您需要在脚本中为页面的不同部分使用urllib、requests、beautifulSoup和selenium web驱动程序(仅举几例)。
|
![]() |
12
4
使用PyQt5
|
![]() |
13
1
我两天来一直在试图找到这个问题的答案。许多答案会把你引向不同的问题。但是 serpentr's 上面的答案很中肯。这是最短、最简单的解决方案。只是提醒一下最后一句话 “变量” 表示 ,所以应该用作:
|
![]() |
14
1
以及 gazpacho
|
![]() |
15
1
我最近使用html库来解决这个问题。 expanded documentation 在读取docs.io很好(跳过注释版本)pypi.org网站). 如果您的用例是基本的,那么您可能会获得一些成功。
在我的例子中,我想要的数据是填充javascript绘图的数组,但是数据在html中的任何地方都没有呈现为文本。有时,如果数据是动态填充的,则根本不清楚所需数据的对象名是什么。如果无法直接从view source或inspect中跟踪js对象,可以在浏览器(Chrome)的调试器控制台中键入“window”,然后输入ENTER,以调出由浏览器呈现的对象的完整列表。如果您对数据存储的位置进行一些有根据的猜测,您可能会在那里找到它。我的图表数据window.view.data文件在控制台中,因此在传递给上面引用的.render()方法的“script”变量中,我使用了:
|
![]() |
July · 如何定义数字间隔,然后四舍五入 1 年前 |
![]() |
user026 · 如何根据特定窗口的平均值(行数)创建新列? 1 年前 |
|
Ashok Shrestha · 需要追踪特定的颜色线并获取坐标 1 年前 |
![]() |
Nicote Ool · 在FastApi和Vue3中获得422 1 年前 |
|
Abdulaziz · 如何对集合内的列表进行排序[重复] 1 年前 |
![]() |
asmgx · 为什么合并数据帧不能按照python中的预期方式工作 1 年前 |