我正在尝试将从网站上抓取的信息添加到列中。我有一个数据集,如下所示:
COL1 COL2 COL3
... ... bbc.co.uk
我想要一个包含新列的数据集:
COL1 COL2 COL3 Website Address Last Analysis Blacklist Status \
... ... bbc.co.uk
IP Address Server Location City Region
这些新专栏来自该网站:https://www.urlvoid.com/scan/bbc.co.uk。
我需要在每一列中填写相关信息。
例如:
COL1 COL2 COL3 Website Address Last Analysis Blacklist Status \
... ... bbc.co.uk Bbc.co.uk 9 days ago 0/35
Domain Registration IP Address Server Location City Region
1996-08-01 | 24 years ago 151.101.64.81 (US) United States Unknown Unknown
不幸的是,我在创建新专栏并用从网站上抓取的信息填充它们时遇到了一些问题。我可能还有更多网站要检查,不仅仅是 bbc.co.uk。
请参阅下面使用的代码。我确信有更好的(并且不那么混乱)的方法来做到这一点。
如果您能帮我解决问题,我将非常感激。谢谢
EDIT:
如上例所示,对于已经存在的数据集,包括三列(col1, col2 and col3
)我还应该添加来自抓取的字段(Website Address,Last Analysis,Blacklist Status, ...
)。对于每个 url,我应该有与其相关的信息(例如bbc.co.uk
在示例中)。
COL1 COL2 COL3 Website Address Last Analysis Blacklist Status \
... ... bbc.co.uk Bbc.co.uk 9 days ago 0/35
... ... stackoverflow.com
... ... ...
IP Address Server Location City Region
COL1 COL2 COL3 Website Address Last Analysis Blacklist Status \
... ... bbc.co.uk Bbc.co.uk 9 days ago 0/35
... ... stackoverflow.com Stackoverflow.com 7 days ago 0/35
Domain Registration IP Address Server Location ...
996-08-01 | 24 years ago 151.101.64.81 (US) United States ...
2003-12-26 | 17 years ago ...
(格式不好,但我认为这足以让您了解预期的输出)。
更新的代码:
urls= ['bbc.co.uk', 'stackoverflow.com', ...]
for x in urls:
print(x)
r = requests.get('https://www.urlvoid.com/scan/'+x)
soup = BeautifulSoup(r.content, 'lxml')
tab = soup.select("table.table.table-custom.table-striped")
dat = tab[0].select('tr')
for d in dat:
row = d.select('td')
original_dataset[row[0].text]=row[1].text
不幸的是,我做错了一些事情,因为它仅将网站(即 bbc.co.uk)上检查的第一个网址中的信息复制到新列下的所有行上。