提取列

时间:2018-03-22 18:57:37

标签: extract

我正在尝试解析来自html页面的信息,如下所示:

第1栏|第2栏|第3栏......

这是我到目前为止的代码:

from bs4 import BeautifulSoup as BS
import urllib.request
html=urllib.request.urlopen(url)
soup=BS(html,"lxml")

但我似乎无法弄清楚我是如何提取的,比如该html页面中的第1列并将其放入python中的数据框中。

2 个答案:

答案 0 :(得分:0)

我建议你去看熊猫。一旦你的html在内存中,你可以尝试

    <div class="col-lg-4 col-sm-6 col-xs-12">
        <div class="thumbnail">
            <a href="https://farm1.staticflickr.com/665/23578574946_b6f90e1ca8_k.jpg" data-toggle="lightbox">
                <img src="https://farm1.staticflickr.com/665/23578574946_b6f90e1ca8_k.jpg" class="img-fluid">
            </a>
        </div>
    </div>

效果很好。

答案 1 :(得分:0)

您可以抓取表格数据,然后添加到数据框:

from bs4 import BeautifulSoup as soup
import urllib
import pandas as pd
page_data = str(urllib.urlopen('http://mlg.ucd.ie/modules/COMP30760/stocks/tlsa.html').read())
final_data = [i.text for i in soup(page_data, 'html.parser').find_all('td')]
last_data = [final_data[i:i+7] for i in range(0, len(final_data), 7)]
df = pd.DataFrame(last_data[1:], columns = last_data[0])

输出(样本)

     Day Month  Year        Open        High         Low       Close
0     02    01  2013          35   35.450001   34.709999   35.360001
1     03    01  2013       35.18   35.450001       34.75       34.77
2     04    01  2013   34.799999   34.799999   33.919998   34.400002
3     07    01  2013   34.799999   34.799999   33.900002       34.34
4     08    01  2013        34.5        34.5   33.110001       33.68
5     09    01  2013   34.009998   34.189999   33.400002   33.639999
6     10    01  2013   33.869999   33.990002   33.380001   33.529999
7     11    01  2013   34.040001   34.040001   32.110001       32.91
8     14    01  2013   33.080002   33.380001   32.849998   33.259998