我正在尝试获取本网站的主表:
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的第一次尝试,也许这个表太复杂了。任何建议或建议都非常感谢。 如果问题愚蠢,我会提前道歉。
为了澄清,我应该得到一个看起来像这样的表:
ValorÚltimoVar。 %Var。 AC。 %añoMáx。分钟。卷。 Capitaliz。霍拉
ABERTIS 16,350 -0,40 -0,07 26,05 16,395 16,315 140.847 16.193 09:32
ACCIONA 83,150 -0,45 -0,38 18,90 83,300 82,850 8.486 4.761 09:31
ACERINOX 12,160 -1,10 -0,14 -3,53 12,320 12,150 58.275 3.357 09:32
ACS 35,880 -0,79 -0,28 21,37 36,055 35,815 28.698 11.290 09:33
AENA 171,450 -0,09 -0,15 35,42 171,500 170,700 4.876 25.718 09:32
AMADEUS IT GROUP 49,120 0,34 0,16 14,83 49,165 48,630 97.650 21.555 09:32
ARCELORMITTAL 19,765 -0,55 -0,11 -6,23 19,790 19,670 54.816 20.198 09:32
BANCO POPULAR 0,653 -1,06 -0,01 -28,87 0,662 0,652 4.537.116 2.741 09:33
BANCO SABADELL 1,808 -1,26 -0,02 39,19 1,827 1,805 1.603.476 10.154 09:33
BANKIA 1,034 -1,52 -0,02 9,29 1,044 1,032 2.630.931 11.909 09:33
BANKINTER 8,204 -1,25 -0,10 12,46 8,267 8,202 106.914 7.374 09:33
BBVA 7,369 -1,55 -0,12 18,47 7,425 7,361 2.112.122 49.136 09:33
CAIXABANK 4,148 -1,47 -0,06 34,15 4,200 4,145 1.440.359 24.811 09:33
CELLNEX TELECOM 17,880 0,03 0,00 31,16 17,880 17,770 113.987 4.142 09:33
DIA 5,525 -0,04 -0,00 18,44 5,527 5,476 213.782 3.439 09:32
ENAGAS 26,160 0,36 0,09 8,44 26,180 25,995 89.481 6.245 09:33
ENDESA 21,740 -0,09 -0,02 8,02 21,760 21,655 45.955 23.017 09:33
FERROVIAL 19,900 -0,82 -0,17 19,01 19,990 19,840 96.503 14.578 09:32
GAMESA 20,055 -1,43 -0,29 24,55 20,240 19,970 160.129 13.660 09:33
天然气21,905 -0,32 -0,07 22,31 21,910 21,760 65.387 21.920 09:32
GRIFOLS 24,555 -0,02 -0,00 30,06 24,620 24,490 24.074 10.464 09:32
IAG 6,840 0,28 0,02 33,36 6,854 6,764 894.978 14.590 09:33
IBERDROLA 6,992 -0,47 -0,03 14,68 6,999 6,968 653.999 45.168 09:33
INDITEX 35,880 -0,26 -0,09 11,73 35,900 35,750 91.546 111.825 09:33
INDRA 12,140 -0,37 -0,05 16,62 12,140 12,095 24.100 2.145 09:32
MAPFRE 3,133 -0,79 -0,03 8,03 3,159 3,129 113.953 9.648 09:33
MEDIASET 12,240 -0,29 -0,03 14,35 12,255 12,170 52.889 4.121 09:33
MELIÁ酒店13,340 -0,52 -0,07 20,40 13,360 13,305 15.800 3.064 09:31
MERLIN PROP。 11,275 -0,22 -0,03 9,15 11,305 11,210 41.484 5.297 09:29
REDELÉCTRICA19,7850,33 0,07 11,84 19,805 19,665 123.146 10.705 09:33
REPSOL 14,985 -0,17 -0,03 11,66 15,015 14,920 165.997 22.424 09:33
SANTANDER 5,784 -1,36 -0,08 18,93 5,820 5,777 3.353.148 84.344 09:33
TECNICAS REUNIDAS 34,460 -0,83 -0,29 -9,98 34,700 34,420 23.015 1.926 09:32
TELEFÓNICA10,000-0,74 -0,07 13,38 10,015 9,971 583.065 50.378 09:33
VISCOFAN 53,950 -0,17 -0,09 15,15 54,040 53,750 8.403 2.514 09:33
答案 0 :(得分:0)
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和请求
此更改
soup = BeautifulSoup(data, 'html5lib')
table=soup.find('table', id='listado_valores')
print(table.text)
是吗?似乎非常接近。