我在抓取一些具有多个 <!DOCTYPE html>
声明的网站时遇到了困难。 。
我正在使用带有 requests 的 Python 2.7.9 和来自 bs4 的 BeautifulSoup。当我执行 requests.get(url) 时,我注意到结果捕获了外部 <!DOCTYPE html>
的文本。而不是第二个内部 <!DOCTYPE html>
.
我的问题是,有没有一种方法,最好使用Python,来抓取包含超过1 <!DOCTYPE html>
的网站的所有信息。 ?
这个人也有和我一样的问题;但他或她的问题没有得到答复: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 代码可以按预期工作。关于我应该如何进行的任何提示?
最佳答案
我解决了我自己的问题。
答案概述如下:
使用实际的浏览器(最好是 Chrome)并访问相关网站。
观察并记下 Chrome 网络部分下 XHR 选项卡中的 GET/POST 请求(右键单击网站,然后单击“检查元素”)。
从那里,我们用 Python 复制每个 GET/POST 请求。
对于每个 GET/POST 请求,我们可以正常地刮掉信息。
无需使用Selenium!
关于javascript - Python 抓取具有多个嵌套 <!DOCTYPE html> 的站点(具有多个 <!DOCTYPE html> 声明的站点),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30203724/