python - 如何在Python中比较来自xml url的两个字符串
问题描述
我需要弄清楚来自一个站点的两个字符串是否相等。如果它们相同,则转到下一个字符串并保存它,如果它们不同,则保存它。
from bs4 import BeautifulSoup as soup
from urllib.request import urlopen
import time
def get_data():
site = 'http://www.televideo.rai.it/televideo/pub/rss102.xml'
op = urlopen(site)
rd = op.read()
op.close()
sp_page = soup(rd, 'xml')
news_list = sp_page.find_all('item')
for news in news_list:
print(news.title.text)
print(news.pubDate.text)
print('-'*60)
while True:
print(get_data())
time.sleep(5)
谢谢
解决方案
XML 中的项目按时间顺序排列。您可以存储最新项目的时间戳并处理所有新项目。
我无法测试它,但它应该是:
from bs4 import BeautifulSoup as soup
from urllib.request import urlopen
import time
import datetime
def get_data():
global prev_date_time
site = 'http://www.televideo.rai.it/televideo/pub/rss102.xml'
op = urlopen(site)
rd = op.read()
op.close()
sp_page = soup(rd, 'xml')
news_list = sp_page.find_all('item')
for news in news_list:
if prev_date_time and prev_date_time >= datetime.datetime.strptime(news.pubDate.text, '%a, %d %b %Y %H:%M:%S %z'):
break
print(news.title.text)
print(news.pubDate.text)
print('-'*60)
if news_list:
prev_date_time = datetime.datetime.strptime(news_list[0].pubDate.text, '%a, %d %b %Y %H:%M:%S %z')
prev_date_time = None
while True:
get_data()
time.sleep(5)
推荐阅读
- java - FileInputStream 无法转换为 Reader
- laravel - 没有自动排序的数据透视表 attach()
- java - 从java中的类中删除命名空间
- salesforce - 使用 AWS Cognito OpenID connect 登录 Salesforce
- angular - Primeng 复选框禁用与 ngmodel 冲突的选项
- odoo - Price_unit 只读解决方法 onchange
- angularjs - AngularJS 删除 # 用于内置 wordpress 的应用程序
- sql-server - Sql 获取最近一个月的 0 数字
- r - R:使用 ggplot2 的扩展/锥形颜色条?
- r - ggplot:在 geom_bar 的每个方面添加不同的行