【问题标题】:Why is the downloadable HTML different from Inspector HTML?为什么可下载的 HTML 与 Inspector HTML 不同?
【发布时间】:2019-11-29 00:39:05
【问题描述】:

https://nestiolistings.com/p/listing/2388/1830290/10/4t4-2d28281a185d15467a11/?utm_source=email-blast&utm_medium=inline

这只是一个例子。如果我下载网页,我得到的 HTML 与我在 Firefox 的 Inspector 中看到的有很大不同。事实上,它丢失了我想要获取的所有数据。请帮助我了解差异,以及是否有某种方法可以访问 Inspector HTML 以进行抓取。谢谢!

【问题讨论】:

  • 一个网页不仅仅是由一个html页面组成的,你的问题的答案可能是javascript
  • Inspector 在运行 JavaScript 后显示代码。
  • 这和python有什么关系?
  • 对不起,我正在使用 BeautifulSoup,但忘记了它并不是特别相关。我删除了标签。

标签: html firefox web-scraping


【解决方案1】:

您可能正在使用 requests 或类似方法来直接获取 html。请注意这不会执行 javascript。因此,如果该站点使用 javascript 呈现内容,您将在脚本中丢失该内容。

您可以使用 Selenium 从代码启动真正的浏览器并确保执行 javascript。在这种情况下,我会尝试这样做,看看这是否会给您带来预期的内容

from selenium import webdriver

driver = webdriver.Chrome()
driver.get("https://nestiolistings.com/p/listing/2388/1830290/10/4t4-2d28281a185d15467a11/?utm_source=email-blast&utm_medium=inline")

print(driver.page_source.encode("utf-8"))

【讨论】:

  • 谢谢!不幸的是,我将进一步研究 selenium,使用您的代码似乎给了我与以前相同的结果,但我感谢您的帮助!
  • 它说有一个浏览器文件需要位于“PATH”,但我不知道它在哪里或是什么。它给出了 /usr/bin 或 /usr/local/bin 的例子,如果这些我也找不到。如果您有什么想法,我将不胜感激。谢谢!
  • 那可能是因为 driver = webdriver.Chrome() 行?例如,您可以在此处下载 chromedriver:chromedriver.chromium.org 然后您需要在该代码行中包含该文件的文件路径 wedriver.Chrom('/some/file/path/chromedriver')
  • 再次感谢。在文件路径名中使用盘符的语法是什么?
  • 从头开始。弄清楚了。让 Firefox 驱动程序正常工作,现在它给了我想要的结果。再次感谢您!
猜你喜欢
  • 2013-12-28
  • 1970-01-01
  • 1970-01-01
  • 2021-08-30
  • 2012-05-05
  • 1970-01-01
  • 2018-02-19
  • 2015-04-23
  • 1970-01-01
相关资源
最近更新 更多