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

时间:2019-01-28 05:59:27

标签: python-3.x web-scraping beautifulsoup 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)

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

1 个答案:

答案 0 :(得分:0)

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

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

  1. here下载chrome驱动程序。选择与您的操作系统匹配的一个。
  2. 解压缩驱动程序并将其放在特定目录中。例如,\usr
  3. 通过运行Selenium安装作为Python模块的pip install 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>

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