我已經能夠成功登錄:
#!/usr/bin/python3-10-6
import mechanize from bs4
import BeautifulSoup
import urllib.request as urllib2
import http.cookiejar as cookielib
#import cookielib ## http.cookiejar in python3
cj = cookielib.CookieJar()
br = mechanize.Browser()
br.set_cookiejar(cj)
br.open("https://www.sunnyportal.com/Templates/Start.aspx?logout=true")
br.select_form(nr=0)
br.form['ctl00$ContentPlaceHolder1$Logincontrol1$txtUserName'] = '[email protected]'
br.form['ctl00$ContentPlaceHolder1$Logincontrol1$txtPassword'] = 'XXXXXXXX'
br.submit()
url = 'https://www.sunnyportal.com/Templates/Start.aspx?logout=false'
r = requests.get(url)
soup = BeautifulSoup(r.text, 'html.parser')
desired_data = soup.select("span", {"class":'.mainValueUnit'})
for x in desired_data:
print('TEXT VALUE:', x.get_text(strip=True), '|', 'DATA_PEAK:', x.get('data-peak'))
現在我想報廢一個跨度標簽(光伏發電)
<div class="widgetBox" data-name="pvPower">
<div class="widgetHead">Aktuelle PV-Leistung</div>
<div class="widgetSubHead"></div>
<div class="widgetBody">
<div class="mainValue">
<img class="powerGaugeBackground" src="/Images/Dashboard/gauge.png" alt="" />
<img class="powerGaugePointer" src="/Images/Dashboard/currentPlantPowerPointer.png" alt="" />
<span
class="mainValueAmount"
data-peak="4920"
data-value="300"
data-timestamp="2022-10-02T09:15:00">-</span>
<span class="mainValueUnit"></span>
</div>
</div>
<div class="widgetFooter">
<a id="ctl00_ContentPlaceHolder1_UserControlShowDashboard1_currentplantPowerWidget_FooterLink" href="javascript:__doPostBack('ctl00$ContentPlaceHolder1$UserControlShowDashboard1$currentplantPowerWidget$FooterLink','')">Energie und Leistung ?</a>
</div>
</div>
如何報廢和列印跨度值?它是 PV_power 的動態變數,經過檢查:
<span class="mainValueAmount" data-peak="4920" data-value="908" data-timestamp="2022-10-02T13:00:00">1177</span>
“1177”號碼是我正在尋找的動態號碼。謝謝
uj5u.com熱心網友回復:
假設您的 HTML 是正確的,并且它沒有使用 Javascript 動態加載/豐富,您可以通過以下方式獲取該資料:
from bs4 import BeautifulSoup as bs
html = '''
<div class="widgetBox" data-name="pvPower">
<div class="widgetHead">Aktuelle PV-Leistung</div>
<div class="widgetSubHead"></div>
<div class="widgetBody">
<div class="mainValue">
<img class="powerGaugeBackground" src="/Images/Dashboard/gauge.png" alt="" />
<img class="powerGaugePointer" src="/Images/Dashboard/currentPlantPowerPointer.png" alt="" />
<span
class="mainValueAmount"
data-peak="4920"
data-value="300"
data-timestamp="2022-10-02T09:15:00">-</span>
<span class="mainValueUnit"></span>
</div>
</div>
<div class="widgetFooter">
<a id="ctl00_ContentPlaceHolder1_UserControlShowDashboard1_currentplantPowerWidget_FooterLink" href="javascript:__doPostBack('ctl00$ContentPlaceHolder1$UserControlShowDashboard1$currentplantPowerWidget$FooterLink','')">Energie und Leistung ?</a>
</div>
</div>
'''
soup = bs(html, 'html.parser')
desired_data = soup.select('.mainValueAmount')
for x in desired_data:
print('TEXT VALUE:', x.get_text(strip=True), '|', 'DATA_PEAK:', x.get('data-peak'))
結果在終端:
TEXT VALUE: - | DATA_PEAK: 4920
對于 BeautifulSoup 檔案,請訪問https://beautiful-soup-4.readthedocs.io/en/latest/index.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/511285.html
上一篇:如何使變數成為條件?
下一篇:PHP如何將字串轉換為var?
