如何将Beautifulsoup的输出附加到熊猫数据框

时间:2019-08-12 15:27:17

标签: python beautifulsoup

我对val weightsMatrix_t = weightsMatrix.transpose 不熟悉。我打算

a)从以下URL(https://aviation-safety.net/database/)获取URL列表,并提供1919年以后(https://aviation-safety.net/database/dblist.php?Year=1919)的数据。

b)获取1919年到当年的数据(日期,类型,注册,操作者,肥胖,位置,猫)

但是,我遇到了一些问题,但仍然陷于a)

感谢任何形式的帮助,非常感谢!

python

我似乎无法获得网址

如果我能得到以下的话,那将是很棒的

S / N URL 1 https://aviation-safety.net/database/dblist.php?Year=1919 2 https://aviation-safety.net/database/dblist.php?Year=1920 3 https://aviation-safety.net/database/dblist.php?Year=1921

1 个答案:

答案 0 :(得分:1)

您不是从要提取的标签中提取href属性。您想要做的是找到所有带有链接的<a>标签(您已经做了,但是您需要使用find_all,因为find只会返回它找到的第一个标签。)然后遍历这些标签。我选择只是让它寻找子字符串'Year',如果确实如此,则将其放入列表中。

#import packages
import numpy as np
import pandas as pd
from bs4 import BeautifulSoup
import requests

#start of code
mainurl = "https://aviation-safety.net/database/"
def getAndParseURL(mainurl):
   result = requests.get(mainurl)
   soup = BeautifulSoup(result.content, 'html.parser')
   datatable = soup.find_all('a', href = True)
   return datatable

datatable = getAndParseURL(mainurl)

#go through the content and grab the URLs
links = []
for link in datatable:
    if 'Year' in link['href']:
        url = link['href']
        links.append(mainurl + url)


#check if links are in dataframe
df = pd.DataFrame(links, columns=['url'])

df.head(10)

输出:

df.head(10)
Out[24]: 
                                                 url
0  https://aviation-safety.net/database/dblist.ph...
1  https://aviation-safety.net/database/dblist.ph...
2  https://aviation-safety.net/database/dblist.ph...
3  https://aviation-safety.net/database/dblist.ph...
4  https://aviation-safety.net/database/dblist.ph...
5  https://aviation-safety.net/database/dblist.ph...
6  https://aviation-safety.net/database/dblist.ph...
7  https://aviation-safety.net/database/dblist.ph...
8  https://aviation-safety.net/database/dblist.ph...
9  https://aviation-safety.net/database/dblist.ph...