【问题标题】:Python Scraping Sites with Multiple and Nested <!DOCTYPE html> (sites with more than one declaration of <!DOCTYPE html>)Python Scraping Sites with Multiple and Nested <!DOCTYPE html>(有多个 <!DOCTYPE html> 声明的站点)
【发布时间】:2015-07-24 02:03:20
【问题描述】:

我无法删除一些具有多个 &lt;!DOCTYPE html&gt; 声明的网站。

我正在使用 Python 2.7.9 和来自 bs4 的请求和 BeautifulSoup。当我执行 requests.get(url) 时,我注意到结果捕获了来自外部 &lt;!DOCTYPE html&gt; 的文本,而不是第二个内部 &lt;!DOCTYPE html&gt;

我的问题是,有没有一种方法,最好是使用 Python,来抓取由多个 &lt;!DOCTYPE html&gt; 组成的网站的所有信息?

这个人也有和我一样的问题;但他或她的问题没有得到答案:https://stackoverflow.com/questions/27259682/mechanize-cutting-off-html-early-python

任何帮助将不胜感激!谢谢。

更新 v1:

我查看了 StackOverflow,发现了这个帖子:Using Python requests.get to parse html code that does not load at once

测试链接是http://www.anthropologie.com/anthro/product/4120200892474.jsp?cm_vc=SEARCH_RESULTS#/

请注意,测试链接不是我正在使用的链接,但想法几乎相同。两个站点都使用 JS 来加载附加信息(我应该早点说明这一点,但我直到现在才意识到,对不起!)。

在尝试 Selenium 加载我正在处理的页面后(我没有在测试链接上尝试过),我仍然无法获取嵌套 html 中的信息。

我确信我的 Selenium 代码可以按预期工作。关于我应该如何进行的任何提示?

【问题讨论】:

  • 你能举个例子吗?比如什么网站可以让我们复制和修复?

标签: javascript python html beautifulsoup python-requests


【解决方案1】:

我解决了我自己的问题。

答案在以下步骤中概述:

  1. 使用实际浏览器(最好是 Chrome)并访问相关网站。

  2. 观察并记下 Chrome 网络部分下 XHR 选项卡中的 GET/POST 请求(右键单击网站并单击“检查元素”)。

  3. 从那里,我们在 Python 中复制每个 GET/POST 请求。

  4. 对于每个 GET/POST 请求,我们可以正常刮掉信息。

无需使用 Selenium!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-13
    • 2015-12-22
    • 2011-12-11
    • 1970-01-01
    • 1970-01-01
    • 2021-04-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多