使用 python3 和 bs4 抓取 html 表不起作用

维克多·斯格

我正在尝试获取本网站的主表:

import bs4 as bs
import urllib.request
from urllib.request import urlopen as upen
from bs4 import BeautifulSoup as soup
import pandas as pd

my_url="http://www.expansion.com/mercados/cotizaciones/indices/ibex35_I.IB.html"

sauce=upen(my_url)
table=soup.find('table')
table_rows=table.find_all('tr')
for tr in table_rows:
td=tr.find_all('td')
print(td)

我已经尝试了一段时间,但无法正确刮擦桌子。这是我第一次尝试 bs,可能有问题的表太复杂了。非常感谢任何建议或建议。如果问题很愚蠢,我提前道歉。

只是为了澄清,我应该得到一个看起来像这样的表:

最后值变量。% 变量。交流。% 年 矿。卷。大写。小时
ABERTIS 16,350 -0.40 -0.07 26.05 16395 16315 140847 16193 09:32
ACCIONA 83150 -0,45 -0,38 18,90 83300 82,850 8486 4761 09:31
ACERINOX 12,160 -1.10 -0,14 -3.53 12320 12150 58275 09 3,357 :32
ACS 35880 -0.79 -0.28 21.37 36055 35815 28698 11290 9点33
AENA 171450 -0.09 -0.15 35.42 171500 170700 4876 25718 09:32
亚玛迪斯49120 0.34 0.16 14.83 49165 48630 97650 21555 9时32
ARCELORMITTAL 19765 -0.55 -0.11 -6.23 19790 19670 54816 20,198 9时32
POPULAR银行0.653 -1.06 -0.01 -28.87 0.662 0.652 4537116 2741 9时33
萨瓦德尔银行1,808 -1.26 -0.02 39.19 1827 1,805 10,154 1603476 9时33分
Bankia银行1034 -1.52 -0.02 9.29 1044 1032 2630931 11,909 09:33
BANKINTER 8204 -1.25 -0.10 12.46 8.267 8.202 106914 7,374 09:33
BBVA 7.369 -1.55 -0 0.12 18.47 7.425 7.361 2112122 49136 09:33
凯克萨银行4.148 -1.47 -0.06 34.15 4200 4.145 1440359 24811 09:33
CELLNEX TELECOM 17.880 0.03 0.00 31.16 17.880 17.770 113987 4,142 09:33
DAY 5.525 -0.04 -0.00 18.44 5.527 5.476 213782 3439 09:32
ENAGAS 26.160 0.36 0.09 8.44 26.180 25.995 89481 6245 09:33
ENDESA 21.740 - 0.09 - 0.02 8.02 21.760 21.655 45.955 23.017 9点33
RAIL 19.900 -0.82 -0.17 19.01 19.990 19.840 96.503 14.578 9点32
GAMESA 20.055 -1.43 -0.29 24.55 20.240 19.970 160129 13660 9点33分
天然气21905 -0.32 -0.07 22.31 21910 21760个65387 21920 9点32
GRIFOLS 24555 -0.02 -0.00 30.06 24620 24490 24074 10464 9点32
IAG 6840 0.28 0.02 33 0.36 6854 6764 894978 14590 9点33
IBERDROLA 6992 -0.47 -0.03 14.68 6999 6968 653999 45168 9点33
INDITEX 35880 -0.26 -0.09 11.73 35900 35750 91546 111825 9点33
INDRA 12140 -0.37 -0.05 16.62 12140 12095 24100 2145 9时32
MAPFRE 3133 -0.79 -0.03 8.03 3159 3129 113953 9648 9点33
MEDIASET 12240 -0.29 -0.03 14 0.35 12255 12170 52889 4121 9点33
MELIÁ酒店13340 -0.52 -0.07 20.40 13360 13305 15800 3064 9时31
MERLIN PROP。11,275 -0.22 -0.03 9.15 11,305 11,210 41,484 5,297 09:29
电网19.785 0.33 0.07 11.84 19.805 19.665 123146 10705 9点33
REPSOL 14.985 -0.17 -0.03 11.66 15.015 14.920 165997 22424 9点33
SANTANDER 5.784 -1.36 -0.08 18 0.93 5820 5777 3353148 84344 9点33
TECNICAS REUNIDAS 34.460 -0.83 -0.29 -9.98 34.700 34.420 23015 1926 09:32
TELEPHONE万-0.74 -0.07 13.38 10.015 9.971 583065 50378 09:33
VISCOFAN 53.950 -0.17 -0.09 15.15 54.040 53.750 8,403 2514 09:33

迪奥戈
import requests
from bs4 import BeautifulSoup

my_url="http://www.expansion.com/mercados/cotizaciones/indices/ibex35_I.IB.html"

r = requests.get(my_url)
data = r.text
soup = BeautifulSoup(data, 'html5lib')
table=soup.find('table')
table_rows=table.find_all('tr')
for tr in table_rows:
    td=tr.find_all('td')
    print(td)

我是这样做的。请使用 pip 安装 html5lib 和请求

编辑 2

为此更改

 soup = BeautifulSoup(data, 'html5lib')
 table=soup.find('table', id='listado_valores')
 print(table.text)

是吗?似乎很接近。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章