我正在尝试使用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')
有人可以帮我吗?谢谢
答案 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