[英]Scraping a Table from a Website using Python
我嘗試了幾種適用於其他網站但不適用於此網址的方法。
https://www.wunderground.com/hourly/es/barcelona/IBARCE215/date/2022-07-25日期(例如 2022-07-25)應該在未來
我試過了
import requests
import lxml.html as lh
import pandas as pd
url = 'https://www.wunderground.com/hourly/es/barcelona/IBARCE215/date/2022-07-25'
page = requests.get(url)
doc = lh.fromstring(page.content)
tr_elements = doc.xpath('//tr')
但是 tr_elements 是空的 它適用於 url = 'https://www.wunderground.com/dashboard/pws/ISANSA11/table/2021-11-30/2021-11-30/daily' url = 'http://pokemondb .net/pokedex/all' 但不是 url = 'https://www.wunderground.com/hourly/es/barcelona/IBARCE215/date/2022-07-25'
我也試過:
import requests
from bs4 import BeautifulSoup
import pandas as pd
url = 'https://www.wunderground.com/hourly/es/barcelona/IBARCE215/date/2022-07-20'
page = requests.get(url)
soup = BeautifulSoup(page.text, 'lxml')
table1 = soup.find('table', id='hourly-forecast-table')
但是找不到表。 它適用於: url = 'https://www.worldometers.info/coronavirus/' table1 = soup.find('table', id='main_table_countries_today')
在 Chrome 中,我使用“Ctrl + U”和“Ctrl + Shift + I”查看 HTML In url = 'https://www.wunderground.com/hourly/es/barcelona/IBARCE215/date/2022-07-25'我可以使用“Ctrl + Shift + I”而不是“Ctrl + U”看到 id='hourly-forecast-table'。 我在湯變量的代碼中都看不到。 在 url = 'https://www.worldometers.info/coronavirus/' 我看到 id='main_table_countries_today' 也使用“Ctrl + U” 我猜這個網站有一些不同的地方。
非常感謝,
您是否嘗試過將它與Selenium以及 Beautiful Soup 一起使用? 獲取 Selenium 和 Chromedriver,您可以使用 Selenium 的send_key
函數使用它來復制您使用的擊鍵,例如“Ctrl+U”。
如果您喜歡使用 pandas 的 selenium 方法,那么下一個示例適合您。 我使用 selenium 和 pandas 來獲取表數據,因為它是由 JavaScript 加載的。
import pandas as pd
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
options = webdriver.ChromeOptions()
options.add_argument("start-maximized")
options.add_experimental_option("detach", True)
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()),options=options)
table=driver.get('https://www.wunderground.com/hourly/es/barcelona/IBARCE215/date/2022-07-20')
table = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, '(//table)[1]'))).get_attribute("outerHTML")
df = pd.read_html(table)[0]
print(df.iloc[:-1])
輸出:
Time Conditions Temp. Feels Like ... Dew Point Humidity Wind Pressure
0 12:00 am Clear 78 °F 78 °F ... 73 °F 87 °% 3 °mph NNE 30.02 °in
1 1:00 am Clear 77 °F 77 °F ... 72 °F 85 °% 3 °mph NNW 30.02 °in
2 2:00 am Clear 77 °F 81 °F ... 71 °F 81 °% 3 °mph NNW 30.02 °in
3 3:00 am Clear 77 °F 81 °F ... 70 °F 79 °% 3 °mph N 30.02 °in
4 4:00 am Clear 76 °F 80 °F ... 69 °F 78 °% 3 °mph N 30.01 °in
5 5:00 am Clear 76 °F 79 °F ... 67 °F 76 °% 4 °mph NNW 30.01 °in
6 6:00 am Clear 75 °F 77 °F ... 66 °F 74 °% 5 °mph N 30.02 °in
7 7:00 am Sunny 75 °F 76 °F ... 67 °F 76 °% 4 °mph N 30.03 °in
8 8:00 am Sunny 77 °F 81 °F ... 68 °F 73 °% 6 °mph NNE 30.05 °in
9 9:00 am Sunny 80 °F 84 °F ... 69 °F 69 °% 7 °mph NE 30.06 °in
10 10:00 am Sunny 81 °F 87 °F ... 71 °F 71 °% 9 °mph ENE 30.08 °in
11 11:00 am Sunny 82 °F 88 °F ... 72 °F 72 °% 11 °mph E 30.09 °in
12 12:00 pm Sunny 82 °F 88 °F ... 72 °F 72 °% 12 °mph E 30.10 °in
13 1:00 pm Sunny 82 °F 88 °F ... 71 °F 70 °% 12 °mph ESE 30.10 °in
14 2:00 pm Sunny 83 °F 88 °F ... 71 °F 68 °% 12 °mph ESE 30.10 °in
15 3:00 pm Sunny 82 °F 88 °F ... 71 °F 68 °% 12 °mph ESE 30.09 °in
16 4:00 pm Mostly Sunny 83 °F 88 °F ... 71 °F 68 °% 12 °mph ESE 30.09 °in
17 5:00 pm Mostly Sunny 82 °F 88 °F ... 71 °F 70 °% 11 °mph ESE 30.08 °in
18 6:00 pm Sunny 82 °F 87 °F ... 71 °F 70 °% 10 °mph ESE 30.07 °in
19 7:00 pm Mostly Sunny 81 °F 87 °F ... 71 °F 72 °% 9 °mph ESE 30.07 °in
20 8:00 pm Sunny 80 °F 85 °F ... 71 °F 73 °% 8 °mph ESE 30.07 °in
21 9:00 pm Sunny 80 °F 84 °F ... 71 °F 76 °% 7 °mph E 30.08 °in
22 10:00 pm Clear 79 °F 83 °F ... 71 °F 77 °% 5 °mph E 30.09 °in
23 11:00 pm Clear 78 °F 82 °F ... 71 °F 79 °% 3 °mph ENE 30.10 °in
[24 rows x 11 columns]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.