ここに XML ファイルの内容を含む URL がありますが、それ自体は技術的には XML ファイルではありません。
http://auxopsweb2.oit.nd.edu/DiningMenus/api/Menus/46
Python の Beautiful Soup ライブラリを使用して、XML コンテンツからデータの一部を取得したいと思いました。ただし、私が知っているのは、ページを表示している HTML としてデータを取得する方法だけです。
import requests
from bs4 import BeautifulSoup as bs
res = requests.get("http://auxopsweb2.oit.nd.edu/DiningMenus/api/Menus/46")
res.raise_for_status()
soup = bs(res.text , 'html.parser')
実際にはすべてのデータにラベルが付けられていないため、検索が困難になります <span>要素。 HTML をバイパスして、そのままの XML コンテンツだけを取得する方法はありますか?私はこれまでに BeautifulSoup を実際に使用したことがないので、私の質問が無知だったら申し訳ありません。ありがとう。
------------------------
別の方法。
from simplified_scrapy import SimplifiedDoc, req
url = 'http://auxopsweb2.oit.nd.edu/DiningMenus/api/Menus/46'
html = req.get(url)
doc = SimplifiedDoc(html)
MenuCourses = doc.selects('ServiceMenu').selects('MenuCourse')
print(MenuCourses.Name.text)
その他の例は次のとおりです: https://github.com/yiyedata/simplified-scrapy-demo/tree/master/doc_examples
------------------------
以下 (データを json として取得し、dict を操作します)
import requests
import pprint
r = requests.get('http://auxopsweb2.oit.nd.edu/DiningMenus/api/Menus/46')
if r.status_code == 200:
data = r.json()
pprint.pprint(data)
else:
print('Failed to read data: {}'.format(r.status_code))