如何在不指定 python 中的 Web 浏览器的情况下从网站中提取 table
How to extract a table from website without specifying the web browser in python
我正在尝试通过编写网络抓取 python 脚本并将其部署在 Azure Databrick 中,自动将数据从 ASX (https://www.asxenergy.com.au/futures_nz) 网站提取到我的数据库中。目前,我的脚本在 Visual Studio 代码中工作,但是当我尝试在数据块中 运行 它时,它崩溃了,抛出了下面的错误。
Could not get version for google-chrome with the command: google-chrome --version || google-chrome-stable --version || google-chrome-beta --version || google-chrome-dev --version
我相信我需要简化我的代码以获得 table 而无需提及我们的浏览器。
我的示例代码如下:
import time
from selenium import webdriver
from bs4 import BeautifulSoup
import requests
import pandas as pd
import sys
from datetime import datetime
from webdriver_manager.chrome import ChromeDriverManager
options = webdriver.ChromeOptions()
options.add_argument('headless')
browser = webdriver.Chrome(ChromeDriverManager().install())
#browser = webdriver.Chrome('C:/chromedriver',options=options) # Optional argument, if not specified will search path.
browser.get('https://www.asxenergy.com.au/futures_nz')
time.sleep(3)
html = browser.page_source
soup = BeautifulSoup(html,'html.parser')
market_dataset = soup.find_all(attrs={'class':'market-dataset'})
market_dataset
我尝试使用下面的代码,只使用 request
包,但它失败了,因为它找不到 'market-dataset' div class
.
import time
from selenium import webdriver
from bs4 import BeautifulSoup
import requests
import pandas as pd
import sys
from datetime import datetime
from webdriver_manager.chrome import ChromeDriverManager
URL = "https://www.asxenergy.com.au/futures_nz"
page = requests.get(URL)
soup = BeautifulSoup(page.content, "html.parser")
market_dataset = soup.findAll("div",href=True,attrs={'class':'market-dataset'})
谁能帮帮我。
此页面使用 JavaScript 从 https://www.asxenergy.com.au/futures_nz/dataset
加载 table
服务器检查它是否是 AJAX/XHR 请求所以它需要 header
'X-Requested-With': 'XMLHttpRequest'
但是你的 findAll("div",href=True, ...
试图找到 <div href="...">
但这个页面没有它 - 所以我用 class="market-dataset"
搜索正常的 <div>
最少的工作代码。
import requests
from bs4 import BeautifulSoup
headers = {
# 'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:98.0) Gecko/20100101 Firefox/98.0',
'X-Requested-With': 'XMLHttpRequest'
}
URL = "https://www.asxenergy.com.au/futures_nz/dataset"
response = requests.get(URL, headers=headers)
soup = BeautifulSoup(response.content, "html.parser")
market_dataset = soup.findAll("div", attrs={'class':'market-dataset'})
print('len(market_dataset):', len(market_dataset))
结果:
len(market_dataset): 10
我正在尝试通过编写网络抓取 python 脚本并将其部署在 Azure Databrick 中,自动将数据从 ASX (https://www.asxenergy.com.au/futures_nz) 网站提取到我的数据库中。目前,我的脚本在 Visual Studio 代码中工作,但是当我尝试在数据块中 运行 它时,它崩溃了,抛出了下面的错误。
Could not get version for google-chrome with the command: google-chrome --version || google-chrome-stable --version || google-chrome-beta --version || google-chrome-dev --version
我相信我需要简化我的代码以获得 table 而无需提及我们的浏览器。
我的示例代码如下:
import time
from selenium import webdriver
from bs4 import BeautifulSoup
import requests
import pandas as pd
import sys
from datetime import datetime
from webdriver_manager.chrome import ChromeDriverManager
options = webdriver.ChromeOptions()
options.add_argument('headless')
browser = webdriver.Chrome(ChromeDriverManager().install())
#browser = webdriver.Chrome('C:/chromedriver',options=options) # Optional argument, if not specified will search path.
browser.get('https://www.asxenergy.com.au/futures_nz')
time.sleep(3)
html = browser.page_source
soup = BeautifulSoup(html,'html.parser')
market_dataset = soup.find_all(attrs={'class':'market-dataset'})
market_dataset
我尝试使用下面的代码,只使用 request
包,但它失败了,因为它找不到 'market-dataset' div class
.
import time
from selenium import webdriver
from bs4 import BeautifulSoup
import requests
import pandas as pd
import sys
from datetime import datetime
from webdriver_manager.chrome import ChromeDriverManager
URL = "https://www.asxenergy.com.au/futures_nz"
page = requests.get(URL)
soup = BeautifulSoup(page.content, "html.parser")
market_dataset = soup.findAll("div",href=True,attrs={'class':'market-dataset'})
谁能帮帮我。
此页面使用 JavaScript 从 https://www.asxenergy.com.au/futures_nz/dataset
加载 table服务器检查它是否是 AJAX/XHR 请求所以它需要 header
'X-Requested-With': 'XMLHttpRequest'
但是你的 findAll("div",href=True, ...
试图找到 <div href="...">
但这个页面没有它 - 所以我用 class="market-dataset"
<div>
最少的工作代码。
import requests
from bs4 import BeautifulSoup
headers = {
# 'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:98.0) Gecko/20100101 Firefox/98.0',
'X-Requested-With': 'XMLHttpRequest'
}
URL = "https://www.asxenergy.com.au/futures_nz/dataset"
response = requests.get(URL, headers=headers)
soup = BeautifulSoup(response.content, "html.parser")
market_dataset = soup.findAll("div", attrs={'class':'market-dataset'})
print('len(market_dataset):', len(market_dataset))
结果:
len(market_dataset): 10