我正在尝试从此页面抓取数据:http://www.kitco.com/texten/texten.html
以下是我正在使用的代码:
import requests
from bs4 import BeautifulSoup
url = "http://www.kitco.com/texten/texten.html"
r = requests.get(url)
# Doing this to force UFT-8 encoding. Not sure if this is needed...
r.encoding = "UTF-8"
soup = BeautifulSoup(r.content)
tag = soup.find_all("London Fix")
print tag
正如您在查看该页面的来源时会注意到的那样,“伦敦修复”一词不在任何标签中 - 我不确定这是cdata还是什么......
知道如何解析这些表吗?
答案 0 :(得分:1)
正如@shaktimaan在评论中指出的那样,“伦敦修复”表并不是真实的 - 它位于pre
标签内,行使用短划线格式化。
一种选择是在表格前找到font
标记并获取.next_sibling
:
import requests
from bs4 import BeautifulSoup
url = "http://www.kitco.com/texten/texten.html"
r = requests.get(url)
soup = BeautifulSoup(r.content)
print soup.body.pre.find('font', size="4").next_sibling.strip()
打印:
--------------------------------------------------------------------------------
London Fix GOLD SILVER PLATINUM PALLADIUM
AM PM AM PM AM PM
--------------------------------------------------------------------------------
Aug 29,2014 1285.75 1285.75 19.4700 1424.00 1424.00 895.00 NA
Aug 28,2014 1288.00 1292.00 19.7500 1425.00 1428.00 897.00 898.00
--------------------------------------------------------------------------------
...
另一种选择是按text
搜索(产生相同的输出):
import re
print soup.body.pre.find(text=re.compile('London Fix'))