美丽的汤没有加载整个页面

时间:2018-07-06 15:37:55

标签: python beautifulsoup web-crawler

我有一个网络抓取脚本

import requests
from lxml import html
import bs4
res = requests.get('https://in.linkedin.com/in/ASAMPLEUSERNAME', headers={'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'})

print(res.text)
  

请用一些虚拟linkedin用户替换代码中网址中的“ ASAMPLEUSERNAME”

但是代码只给了我部分不完整(几乎没有)的网页源代码

3 个答案:

答案 0 :(得分:3)

正如BenG所说,内容是动态的。通过查看源代码可以看到这一点。那里的很多HTML都包含“脚本”。您可以使用硒之类的其他库来加载动态元素。

编辑:从理论上讲,这是使用硒获得页面源代码的方式。实际上,这似乎有点困难。我被重定向到Linkedin的登录名。但是您可以扩展代码以登录,然后获取页面的源代码。如果您需要帮助,请告诉我。请注意,要使此代码正常工作,您需要安装chrome,并在显示yourdriver的路径上放置chromedriver。

from selenium import webdriver
driver = webdriver.Chrome(executable_path=yourdriver)
url ='https://in.linkedin.com/in/SOMEUSER'
driver.get(url)
html = driver.page_source

答案 1 :(得分:1)

其他答案建议使用Selenium,它适用于大多数Web抓取业务。

但是,如果您担心速度,请转至javascript源,并可能通过ajax请求查找您感兴趣的实际内容来自何处。也许您可以直接访问API端点。

答案 2 :(得分:1)

据我所知,您没有使用BeautifulSoup。我猜你需要这样的东西:

from selenium import webdriver
from bs4 import BeautifulSoup

driver = webdriver.Chrome(driverPath)
driver.get(url)
page = driver.execute_script('return document.body.innerHTML')
soup = BeautifulSoup(''.join(page), 'html.parser')
相关问题