为什么我不能用beauthulsoup解析Facebook应用页面上的img标签?

2024-04-20 10:52:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在构建一个函数来从带有Python请求和BeautifulSoup的网页中提取图像源url。大多数页面都能正常工作,但当我在Facebook应用程序页面上尝试时,beauthulsoup根本找不到任何图像元素。在

当我检查服务器返回的HTML时,我注意到Facebook页面将图像隐藏在DOM的注释部分中——这是一个动态HTML生成问题。在

那么,我的问题是如何最好地提取一个完整格式的img标记字符串,该字符串位于HTML的注释掉部分,而不是DOM的一部分。这只是一个正则表达式的工作,还是我可以让BeautifulSoup想办法看它?在

Facebook应用程序示例:
http://www.facebook.com/cocacola/app_106795496113635

代码:

import requests
r = requests.get(url, allow_redirects=True)
html = r.text
soup = BeautifulSoup(html)

HTML

^{pr2}$

Tags: 函数字符串图像应用程序url元素网页facebook
1条回答
网友
1楼 · 发布于 2024-04-20 10:52:57

第二个片段看起来像是动态生成的最终HTML。要进行验证,请将通过HTTP获得的结果与Firebug显示的最终DOM进行比较。您有几种选择:

  1. 对Javascript代码进行反向工程,并编写Python代码来模拟它的行为
  2. 使用真正的DOM感知浏览器环境,比如Selenium或我自己的库dryscrape,它在幕后使用QtWebkit,并且更加轻量级和快速(但仅在Linux上测试)。在

相关问题 更多 >