python - BS4 获取 XML 标签变量

标签 python xml python-3.x beautifulsoup

我正在使用 bs4 进行网页抓取,并尝试从这行 xml <graph gid="1" color="#000000" balloon_color="#000000" title="Approve"> 获取标题和颜色标签。

输出结果将是一个类似 {'title':'approve', 'color':'#000000'} 的字典。

xml为here的页面

我已经编写了这个函数,它绝不是高效的,但希望我的数据帧的标题是 title 的结果而不是手动输入的值。所以而不是 GID1它将显示 ApproveObama或者无论标题的结果是什么。

def rcp_poll_data(xml):
    soup=bs(xml,"xml")
    dates = soup.find('series')
    datesval = dates.findChildren(string=True)
    del datesval[-7:]
    obama = soup.find('graph', { "gid" : "1" })
    obamaval = obama.findChildren(string=True)
    romney = soup.find('graph', { "gid" : "2" })
    romneyval = romney.findChildren(string=True)
    result = pd.DataFrame({'date':pd.to_datetime(datesval), 'GID1':obamaval, 'GID2':romneyval})
    return result

我正在使用 bs4 并努力寻找正确的术语来帮助我实现这一点。我想要隔离的这些标签是元素还是属性?

这不是专业的事情,我只是为了好玩而闲逛。因此,任何能让我更接近的帮助都会很棒。 (我使用的是Python 3)

最佳答案

找到图节点后,您只需提取属性即可:

import requests
from bs4 import BeautifulSoup

soup = BeautifulSoup(requests.get("http://charts.realclearpolitics.com/charts/1044.xml").content,"xml")
g = soup.find("graph", gid="1")
data = {"title":g["title"], "color": g["color"]}

这会给你:

{'color': '#000000', 'title': 'Approve'}

关于python - BS4 获取 XML 标签变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40097088/

相关文章:

python - 如何将 Mixins 应用于 django 应用程序中的所有 CBV?

xml - 谷歌通讯录 API : Unauthorized 401 Unknown authorization header

html - 从 SVG 文件中提取路径坐标

c# - 获取 Xml 属性

python-3.x - gcp firestore上的python超时流方法

python-3.x - 为什么根据 python -a(b+c) != a(-b-c) ?

python - 当我尝试将 excel 文件转换为列表时,“DataFrame”对象没有属性 'tolist'

python - 将数字拆分为整数和小数部分

python - 核心应用程序测试中的错误

python - 如何在 python 中打印毕达哥拉斯金字塔?