如何将XML属性值解析到pandas dataframe?附谷歌搜索XML处理案例
解决方案
问题根源
你的代码返回空DataFrame,核心错误是错误尝试从CompleteSuggestion节点直接获取suggestion data属性。查看目标XML的结构,suggestion是CompleteSuggestion的子标签,data才是这个子标签的属性,而非父节点的属性。
修正后的BeautifulSoup实现
from bs4 import BeautifulSoup import requests import pandas as pd response = requests.get('https://clients2.google.com/complete/search?hl=en&output=toolbar&q=how%20garage%20doors') bs = BeautifulSoup(response.text, 'xml') obs = bs.find_all("CompleteSuggestion") df = pd.DataFrame(columns=['Keyword']) for node in obs: # 定位子标签suggestion并提取data属性 keyword = node.find('suggestion')['data'] df = df.append({'Keyword': keyword}, ignore_index=True) print(df.head())
更高效的pandas原生方案
pandas的read_xml方法可以直接解析XML结构,无需手动遍历节点,代码更简洁:
import pandas as pd import requests response = requests.get('https://clients2.google.com/complete/search?hl=en&output=toolbar&q=how%20garage%20doors') # 通过XPath直接提取所有suggestion标签的data属性 df = pd.read_xml(response.text, xpath='//suggestion') # 重命名列名更贴合需求 df.rename(columns={'data': 'Keyword'}, inplace=True) print(df.head())
注意事项
- Google的这个自动补全API可能存在访问限制,若请求失败,可尝试添加
headers={'User-Agent': 'Mozilla/5.0'}模拟浏览器请求 - 两种方案都能正确提取目标搜索关键词,
read_xml更适合处理结构规范的XML数据
内容的提问来源于stack exchange,提问作者user13056765
相关产品推荐
相关产品推荐

