我正在尝试抓取此页面中包含的信息:https://web.archive.org/web/20190718200413/https://public.era.nih.gov/pubroster/jsp/preRosIndex.jsp?CID=102353&AGENDA=365050
基本上,我想创建一个包含姓名、职业等的列(我知道我必须处理一些人比其他人有更多"行"的事实)。到目前为止,我正在做:
sep = soup.find_all("p")[1:]
然后我在想这样的事情(不是很优雅,但可能可以完成这项工作):
for bullet in sep:
if len(bullet.find_all("br"))==9:
person = {}
person["NAME"]=bullet.contents[0].strip()
person["PROFESSION"]=bullet.contents[2].strip()
person["DEPARTMENT"]=bullet.contents[6].strip()+" "+bullet.contents[8].strip()
person["INSTITUTION"]=bullet.contents[12].strip()
person["LOCATION"]=bullet.contents[14].strip()
(我必须调整数字,并为len()创建所需数量的case,但我的想法是这样的)。然而,当尝试测试这段代码时,bullet. contents [0]. strip()只返回一个空值(例如,当我用sep [1]. contents [0]. strip()测试它时,我得到了"")。
你知道这是从哪来的吗?我该怎么修?
谢谢!
1条答案
按热度按时间2w2cym1i1#
contents
将考虑后面跟有<br/>
或换行符等的任何空格。这里有一种方法来获得这些数据-你需要摆弄定位器,以正确地获得位置,职业等:
最终结果:
最后,BeautifulSoup documentation。