【问题标题】:How can i manage HTML code inside a variable?如何在变量中管理 HTML 代码?
【发布时间】:2024-05-19 23:50:02
【问题描述】:

您好,我在管理变量中的 html 代码时遇到问题。

我想制作一个在网站上登录帐户的程序,然后检查特定位置的某些内容是否发生了变化,如果发生了变化,然后给我发送电子邮件或某种通知。

import requests
from bs4 import BeautifulSoup as bs

tab = []


payload = {
    'plates': 'login',
    'vin': 'password'
}

with requests.Session() as s:
    p = s.post('url', data=payload)

    print (p.text)


soup = bs(p.text,'html.parser')

body = soup.find_all("li",{"class" : "state"},"span")


a = body[2]
print (a)

p.text 是整个 html 代码

身体是这样的

[<li class="state first">
<p><span>Przyjęto wniosek, trwa postępowanie administracyjne</span></p>
<img class="arrow" src="//cdn.info-car.pl/webfiles/1590137977316/img/document/selected_status.png"/>
</li>, <li class="state active">
<p><span>Dokument został zamówiony</span></p>
<img class="arrow" src="//cdn.info-car.pl/webfiles/1590137977316/img/document/selected_status_active.png"/>
</li>, <li class="state">
<p><span>Dokument do odbioru w urzędzie</span></p>
<img class="arrow" src="//cdn.info-car.pl/webfiles/1590137977316/img/document/selected_status.png"/>
</li>, <li class="state last">
<p><span>Dokument wydany</span></p>
<img class="arrow" src="//cdn.info-car.pl/webfiles/1590137977316/img/document/selected_status.png"/>
</li>]

body[2] 看起来像这样:

<li class="state">
<p><span>Dokument do odbioru w urzędzie</span></p>
<img class="arrow" src="//cdn.info-car.pl/webfiles/1590137977316/img/document/selected_status.png"/>
</li>

现在我的计划是从 body[2] 中只选择 src="//cdn.info-car.pl/webfiles/1590137977316/img/document/selected_status.png"/&gt;

然后将其与包含相同文本的另一个变量进行比较(我从网络上抓取的 body[2] 中的变量希望有一天会改变)

如果这 2 个变量不完全相同,那就做点什么(我想我会处理消息部分)

我只是不知道如何选择我想要的部分。 像字符串一样管理它很困难,因为所有这些怪异的字符(、、'、/)等等。

我想我希望我的最终解决方案是这样的

if The_part_I_want == The old html code:
    pass
else:
    send me a notification  

【问题讨论】:

    标签: python html string authentication web-scraping


    【解决方案1】:

    body[2] 中使用class=arrow 搜索img 元素并获取其src 属性。

    the_old_url = "//cdn.info-car.pl/webfiles/1590137977316/img/document/selected_status.png"
    img = body[2].find('img', class_='arrow')
    if img and img['src'] == the_old_url:
        pass
    else:
        send_notification()
    

    【讨论】:

    • 不幸的是它不起作用。我试图打印“img”以查看里面有什么,以检查这是否是我需要的部分。事实证明并非如此。打印后它只是说“无”。我刚刚添加到我的代码变量:the_old_url = 'src="//cdn.info-car.pl/webfiles/1590137977316/img/document/selected_status.png"/>' 也许我只是不明白如何使用您的代码?
    • the_old_url 应该只是//cdn...,它不应该有src=
    • Noneimg 还是img['src'] 的值?
    • 无是img的值。我还将 the_old_url 更改为 //cdn.info-car.pl/webfiles/1590137977316/img/document/selected_status.png"/> 但它没有用
    • 如果imgNone,那么body[2] 中实际上没有&lt;img class="state"...&gt;,正如您在问题中显示的那样。再次检查body[2] 的值。
    最近更新 更多