无法下载网页的完整源代码

时间:2019-07-30 13:21:31

标签: python

我正在尝试使用python请求库来抓取this网页。 但是我无法下载完整的html源代码。当我使用网络浏览器检查元素时,它会提供完整的html,我相信可以将其用于抓取,但是当我使用python请求库访问此url时,那些具有数据的html标签就会消失,而我无法从这些数据中抓取数据。这是我的示例代码:

import requests
from bs4 import BeautifulSoup as BS
import urllib
import http.client
url  = 'https://www.udemy.com/topic/financial-analysis/?lang=en'
user_agent='my-user-agent'
request = urllib.request.Request(url,headers={'User-Agent': user_agent})
html = urllib.request.urlopen(request).read()
soup = BS(html,'html.parser')

有人可以帮我吗?谢谢

3 个答案:

答案 0 :(得分:1)

该页面可能是由javascript构建的,这意味着该站点发送的内容与您从urllib中提取的资源相同,然后浏览器执行javascript,修改了源以呈现您正在查看的页面

您将需要使用诸如硒之类的东西,它将在浏览器中打开页面,呈现JS,然后返回源,例如

from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://www.udemy.com/topic/financial-analysis/?lang=en")
driver.page_source # or driver.execute_script("return document.body.innerHTML;")

答案 1 :(得分:0)

我建议您使用stdlib模块urllib2,它将使您轻松获得Web资源。 例: 导入urllib2 响应= urllib2.urlopen(“ http://google.de”) page_source = response.read()

AND ...

要解析代码,请查看BeautifulSoup。

答案 2 :(得分:0)

谢谢你们,@ blakebrojan我尝试了您的方法,但是它打开了一个新的chrome实例并在其中显示结果,但是我想要的是获取我的代码中的源代码并从该代码中废弃数据...这是代码

from selenium import webdriver

driver = webdriver.Chrome('C:\\Users\\Lenovo\\Desktop\\chrome-driver\\chromedriver.exe')
driver.get("https://www.udemy.com/topic/financial-analysis/?lang=en")

html=driver.page_source