Web Scraping a table using python beautiful soup

Web Scraping a table using python beautiful soup

我正在尝试从网页中获取信息 table。

https://grs.icarda.org/accessions/?IG=46860

我想要第二个 table 的 'collecting information'。但是没有标签或id可以轻松解析数据。

table = soup.find('td', colspan='9')
table_data = soup.find('td', {'width':'150px', 'height':'26px'})

这是HTML

<tbody><tr><td colspan="9" style=" background-color: #FFFFFF; font-weight: bold; height:33px;">Collecting information</td></tr>
                                        <tr style="background-color:#d7d4d4; height:26px;"><td style="vertical-align:middle;">Mission code:</td><td style="width:5px;"></td><td style="vertical-align:middle;">TUR79-2</td> <td width="20"></td></tr>
                                        <tr><td style="width:250px; height:26px;">Mission title:</td><td width="5"></td><td>M.J. Metzger, S.Jana (USDA report)</td></tr>
                                        <tr style="background-color:#d7d4d4; height:26px;"><td style="vertical-align:middle;">Country :</td><td style="width:5px;"></td><td colspan="2" style="vertical-align:middle;"><img style="vertical-align:middle; width:24px; height:24px;" src="../images/flags/TUR.png"><span style="vertical-align:middle;">     &nbsp;Turkey</span></td></tr><tr>
                        </tr><tr><td style="width:150px; height:26px;">Site Code:</td><td width="5"></td><td colspan="2">TUR79-2:12</td></tr><tr style="background-color:#d7d4d4; height:26px;"><td style="width:150px; height:26px;">Collectors:</td><td width="5"></td><td colspan="2">J.A. Hoffmann - M. Kanbertay - M.J. Metzger - H. Sencer</td></tr><tr style=" height:26px;"><td style="width:150px; height:26px;">Collect Date:</td><td width="5"></td><td colspan="2">1979/08/09</td></tr>
                        <tr style="background-color:#d7d4d4;"><td style=" width:150px; height:26px;">Collector's number:</td><td width="5"></td><td colspan="2">79TK012-057</td></tr><tr style=" height:26px;"><td style="width:150px; height:26px;">Admin 1:</td><td width="5"></td><td colspan="2">Malatya Province</td></tr><tr style=" background-color:#d7d4d4;height:26px;"><td style="width:150px; height:26px;">Admin 2:</td><td width="5"></td><td colspan="2"></td></tr><tr style="height:26px;"><td style="width:150px; height:26px;">Collecting site:</td><td width="5"></td><td colspan="2">5 km S of Darende</td></tr>
                                    </tbody>

您可以使用 pandas,其中包含 read_html(),returns 页面上每个 table 的数据帧列表。 table 是第三个(索引 2),所以这段代码可以帮助你。获得 table 后,我将这两列放入字典中:

import pandas as pd

df = pd.read_html('https://grs.icarda.org/accessions/?IG=46860')[2] #3rd table

col1 = df[0]
col2 = df[2]

zipped = zip(col1,col2)

output = {}
for x,y in zipped:
    output[x] = y

print(output)