GoLang Scraper。如何在网站上抓取动态生成的链接?

时间:2017-08-27 13:39:20

标签: go web web-scraping web-crawler

我正在尝试抓取产品视频链接(由其他网络服务动态生成。位置位于左侧的产品图片下)。您可以查看以下链接, https://www.tokopedia.com/chocoapple/ready-stock-bnib-iphone-128gb-7-plus-jet-black-garansi-apple-1-tahun-10?src=topads 谷歌浏览器“检查元素”显示div标签。但页面源中不存在相同的标记。 怎么做?我正在研究goQuery来实现任务,但不确定它是否有效。我不是网站开发人员,所以如果我的问题描述不具体,请考虑提供建议。 谢谢。

3 个答案:

答案 0 :(得分:3)

如果标签不在源代码中,那么GoQuery将无效。 GoQuery用于使用类似jQuery的API解析HTML源代码。

您需要先使用无头WebKit(如phantomjs,chromelesspuppeteer)处理网页。这些工具中的每一个都允许您在处理之前处理网页上的所有Javascript。这样,将处理用于呈现您感兴趣的视频的AJAX,并且将更新源。然后,您可以下载应该包含div的相应源。

答案 1 :(得分:1)

请找到下一个标记 08-27 15:41:31.884 19384-19384/com.example.simeon.najdiparking E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.simeon.najdiparking, PID: 19384 java.lang.NoSuchMethodError: No virtual method zzTt()Z in class Lcom/google/firebase/FirebaseApp; or its super classes (declaration of 'com.google.firebase.FirebaseApp' appears in /data/app/com.example.simeon.najdiparking-1/split_lib_dependencies_apk.apk:classes20.dex) at com.google.firebase.database.FirebaseDatabase.getInstance(Unknown Source) at com.google.firebase.database.FirebaseDatabase.getInstance(Unknown Source) at com.example.simeon.najdiparking.MainActivity.onCreate(MainActivity.java:48) at android.app.Activity.performCreate(Activity.java:6237) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) at android.app.ActivityThread.-wrap11(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:5417) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 。如您所见,src包含ID“oKR2fh09Nic”。这是需要路径https://www.youtube.com/watch?v=oKR2fh09Nic

此外,您可以使用<img class="thumbnail-img horizontal" src="//i.ytimg.com/vi/oKR2fh09Nic/mqdefault.jpg">加载视频信息。

此处示例https://github.com/kkdai/youtube/blob/master/youtube.go

答案 2 :(得分:1)

您可能需要像浏览器一样评估页面。正如schollz回答的那样,这可以通过所谓的无头浏览器(可通过cli或api使用的浏览器,它们不显示他们的gui)。

在go world中有chromedp

https://github.com/knq/chromedp

https://www.youtube.com/watch?v=_7pWCg94sKw