通过使用Beautiful Soup并将我的Web源数据隔离在'p'标记内,我设法检索了所需的数据。现在,我想遍历变量“表”中的剩余数据(在每一行和每个单元格上)以将数据刮到列表中。谁能帮我实现这个目标?我读过其他几篇文章,但无法将其应用于我的特定问题...谢谢。

from bs4 import BeautifulSoup
import urllib2
url = "http://www.gks.ru/bgd/free/B00_25/IssWWW.exe/Stg/d000/000715.HTM"
page = urllib2.urlopen(url)
soup = BeautifulSoup(page.read(), 'html.parser')
table=soup.findAll('p',text=True)
print(table)

最佳答案

假设要获取每月价格数据,则需要在tr中查找所有table元素,然后跳过前3个(标题行)。请注意,html.parser不适用于我,但是lxml可以(请参见Differences between parsers):

soup = BeautifulSoup(page, 'lxml')  # requires 'lxml' to be installed

table = soup.find("center").find("table")
for row in table.find_all("tr")[3:]:
    cells = [cell.get_text(strip=True) for cell in row.find_all("td")]
    print(cells)


印刷品:

['January', '469,4', '15,0', '3,9']
['February', '479,8', '16,7', '2,2']
['March', '485,6', '16,9', '1,2']
['April', '487,8', '16,4', '0,5']
['May', '489,5', '15,8', '0,4']
['June', '490,5', '15,3', '0,2']
['July', '494,4', '15,6', '0,8']
['August', '496,1', '15,8', '0,4']
['September', '499,0', '15,7', '0,6']
['October', '502,7', '15,6', '0,7']
['November', '506,4', '15,0', '0,8']
['December', '', '', '']

关于python - 从简化表中抓取数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34822633/

10-11 22:24
查看更多