Python requests.get(url) 返回 javascript 代码而不是页面 html

Cha*_*uad 1 beautifulsoup web-scraping python-3.x python-requests

我有一个非常简单的问题。我正在尝试从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)
Run Code Online (Sandbox Code Playgroud)

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

Anw*_*vic 7

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

要解决此问题,您需要执行以下步骤:

  1. 这里下载 chrome-driver 。选择与您的操作系统相匹配的一种。
  2. 解压驱动,放到某个目录下。例如,\usr
  3. Selenium通过运行安装它是一个 python 模块pip install selenium。请注意,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>

Run Code Online (Sandbox Code Playgroud)

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