2 回答

TA貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超6個(gè)贊
頁(yè)面加載后,網(wǎng)站就會(huì)動(dòng)態(tài)加載JavaScript
。所以你可以使用requests-html或selenium
.
from selenium import webdriver
from selenium.webdriver.firefox.options import Options
options = Options()
options.add_argument('--headless')
driver = webdriver.Firefox(options=options)
driver.get(
? ? "https://www.weatherbug.com/weather-forecast/hourly/san-francisco-ca-94103")
data = driver.find_elements_by_css_selector("div.temp.ng-binding")
for item in data:
? ? print(item.text)
driver.quit()
輸出:
51°
52°
53°
54°
53°
53°
52°
51°
51°
50°
50°
49°
根據(jù)用戶請(qǐng)求更新:
import requests
from bs4 import BeautifulSoup
r = requests.get(
? ? "https://www.weatherbug.com/weather-forecast/hourly/san-francisco-ca-94103")
soup = BeautifulSoup(r.text, 'html.parser')
for item in soup.select("div.hour-card__mobile__cond"):
? ? item = int(item.contents[1].get_text(strip=True)[:-1])
? ? print(item, type(item))
輸出:
51 <class 'int'>
52 <class 'int'>
53 <class 'int'>
53 <class 'int'>
53 <class 'int'>
53 <class 'int'>
52 <class 'int'>
51 <class 'int'>
51 <class 'int'>
50 <class 'int'>
50 <class 'int'>
50 <class 'int'>

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超9個(gè)贊
當(dāng)您看到 class = "temp ng-binding" 時(shí),這意味著該 div 具有“temp”類和“ng-binding”類,因此查找兩者都不起作用。另外,當(dāng)我運(yùn)行你的腳本時(shí),臨時(shí)容器的 html 看起來(lái)像這樣:
print(temp_containers[0])
<div class="temp">
51°
</div>
所以我運(yùn)行了這個(gè)并得到了結(jié)果
import requests
import pandas as pd
from bs4 import BeautifulSoup
url = 'https://www.weatherbug.com/weather-forecast/hourly/san-francisco-ca-94103'
header = {
"User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.75 Safari/537.36",
"X-Requested-With": "XMLHttpRequest"
}
page = requests.get(url, headers=header)
soup = BeautifulSoup(page.text, 'html.parser')
temp_containers = soup.find_all('div', class_ = 'hour-card__mobile__cond')
print(type(temp_containers))
print(len(temp_containers))
for div in temp_containers:
a = div.find('div', class_ = 'temp')
print(a.text)
- 2 回答
- 0 關(guān)注
- 138 瀏覽
添加回答
舉報(bào)