【发布时间】:2019-10-15 14:52:42
【问题描述】:
这与 SO 上的其他帖子非常相似,例如here,我就是看不出我做错了什么。
我想在this 页面上抓取标记为“活动”的框,并且我希望输出如下所示:
因此,您可以看到与原始网页相比感兴趣的两个主要功能 (1) 将多个表合并到一个表中,如果该列还没有看到,只需创建一个新列;(2) 我想提取该列的实际href,而不仅仅是名称,例如'Jacobsen et al' 因为我最终要从 href 中提取 PMID 值(一个整数)。
这是我的两个目标,我写了这段代码:
import requests
import pandas as pd
from bs4 import BeautifulSoup
for i in range(23,24):
# try:
res = requests.get("http://www.conoserver.org/index.php?page=card&table=protein&id=" + str(i))
soup = BeautifulSoup(res.content, 'lxml')
table = soup.find_all('table',{'class':'activitytable'})
for each_table in table:
#this can print references
print(each_table.a)
#this can print the data frames
df = pd.read_html(str(each_table))
print(df)
#how to combine the two?
有人能告诉我为每个表的每一行单独打印 href 的正确方法(例如,本质上它会为每个表添加一个带有实际 href 的额外列吗?;所以它应该打印出三个表,一个额外的每个表中的href列)
然后我可以尝试专注于如何组合表格,我刚刚在这里提到了最终目标,以防有人可以想到一种更蟒蛇式的方式来用一块石头杀死两只鸟/以防它有帮助,但我认为他们'是不同的问题。
【问题讨论】:
标签: pandas beautifulsoup