【问题标题】:Retrieving text content from Javascript URL从 Javascript URL 检索文本内容
【发布时间】:2020-06-04 20:28:50
【问题描述】:

我正在修改 play-scraper API 以抓取 Play-store 应用详细信息。它使用BeautifulSoup解析HTML页面[reference]。

我对应用程序可用的所有附加信息特别感兴趣,如下面的屏幕截图所示。 (以上截图来自app。)



由于Permissions 下的View details URL 如下所示,我一直无法提取应用请求的权限列表(如上图所示)。

<a class="hrTbp" jsname="Hly47e">View details</a>

单击View details URL 会显示我要提取的权限列表(截图如下)。



我不熟悉 Javascript。任何帮助将不胜感激。

【问题讨论】:

  • 这不是一个真正的链接:它不会像经典的a 标签那样重定向到另一个页面(它无论如何都没有href 属性)。相反,当用户点击“链接”时,某处有一个监听器会打开一个弹出窗口。

标签: javascript python


【解决方案1】:

如果我正确理解了这个问题,您正试图从模式中抓取数据。当网站第一次加载时,这些模态数据在 html 中不可用。单击查看详细信息按钮后会获取它们。这就是为什么解析器没有获取模式内的数据,在你的情况下是权限信息。所以这就是你的问题的原因。

现在关于解决方案,一种可能的解决方案可以通过使用Selenium 和chromedriver 来实现,方法是在视图详细信息文本上执行点击事件,然后获取模态数据。看看this link 了解一下。

更新:要了解使用 Selenium 和 chromedriver 的解决方案,请考虑以下代码:

options = Options()
options.headless = True
driver = webdriver.Chrome('local_path_to_chrome_driver', options=options)

driver.get(url_of_the_play_store_app)
time.sleep(5) #sleep for 5 secs sometime to fetch the data
driver.find_element_by_link_text("View details").click() #performing the click event
time.sleep(5) # again sleep for 5 secs to fetch the modal data
soup = BeautifulSoup(driver.page_source, "lxml")

soup 变量现在具有更新后的抓取数据,包括模态窗口数据,您可以从 soup 中检索模态窗口数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-31
    • 2015-02-06
    • 1970-01-01
    • 2016-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多