【问题标题】:Python requests.get(url) returning javascript code instead of the page htmlPython requests.get(url) 返回 javascript 代码而不是页面 html
【发布时间】:2019-01-28 05:59:27
【问题描述】:

我有一个非常简单的问题。我试图从linkedIn 页面的html 中获取职位描述,但我没有得到页面的html,而是得到了几行看起来像javascript 代码的行。我对此很陌生,因此将不胜感激任何帮助!谢谢

这是我的代码:

import requests
url = "https://www.linkedin.com/jobs/view/inside-sales-manager-at-stericycle-1089095836/"
page_html = requests.get(url).text
print(page_html)

当我运行它时,我没有得到我期望的包含职位描述的 html...我只是得到了几行 javascript 代码。

【问题讨论】:

  • 似乎对我有用。你能分享你得到的输出吗?
  • 返回的JS代码其实是window.onLoad()事件绑定的函数。我怀疑页面的其余部分是使用客户端代码加载的,因此您需要先执行该代码以检索生成的 HTML。可能的解决方案可以在here 中找到
  • 谢谢先生,感谢您的回复……您说的很有道理,我认为您是对的。我终于让它与 Selenium 一起工作了……这是一个比 Beautiful Soup 更容​​易的解决方案。祝你有美好的一天! :-)
  • Anwarvic 完全正确。只想添加需要定义 webdriver_path ,否则您将收到“找不到 chromedriver 错误”。

标签: python-3.x web-scraping beautifulsoup python-requests


【解决方案1】:

某些网站会根据访问网站的浏览器类型呈现不同的内容。 LinkedIn 就是这种行为的完美例子。如果浏览器具有高级功能,则网站可能会呈现“更丰富”的内容——更具动态和风格的内容。并且使用机器人无助于查看这些网站。

要解决此问题,您需要按照以下步骤操作:

  1. here下载chrome-driver。选择与您的操作系统匹配的那个。
  2. 解压驱动,放到某个目录下。例如,\usr
  3. 通过运行pip install selenium 安装Selenium 这是一个python 模块。 请注意,selenium 依赖于另一个名为 msgpack 的包。所以,你应该先用这个命令pip install msgpack安装它。
  4. 现在,我们准备运行以下代码
import requests
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.chrome.options import Options


def create_browser(webdriver_path):
    #create a selenium object that mimics the browser
    browser_options = Options()
    #headless tag created an invisible browser
    browser_options.add_argument("--headless")
    browser_options.add_argument('--no-sandbox')
    browser = webdriver.Chrome(webdriver_path, chrome_options=browser_options)
    print("Done Creating Browser")
    return browser


url = "https://www.linkedin.com/jobs/view/inside-sales-manager-at-stericycle-1089095836/"
browser = create_browser('/usr/chromedriver') #DON'T FORGET TO CHANGE THIS AS YOUR DIRECTORY
browser.get(url)
page_html = browser.page_source
print(page_html[-10:]) #prints dy></html>

现在,您有了整个页面。我希望这能回答你的问题!

【讨论】:

  • 感谢 Anwar 的详细回复...非常感谢 :-)...是的! Selenium 是一个更好、更简单的工具
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-27
  • 2016-12-21
  • 2018-12-07
  • 2017-10-27
  • 2017-12-21
相关资源
最近更新 更多