【发布时间】:2021-03-25 17:31:45
【问题描述】:
考虑这个简单的例子
df = pd.DataFrame({'link' : ['https://en.wikipedia.org/wiki/World%27s_funniest_joke',
'https://en.wikipedia.org/wiki/The_Funniest_Joke_in_the_World']})
df
Out[169]:
link
0 https://en.wikipedia.org/wiki/World%27s_funniest_joke
1 https://en.wikipedia.org/wiki/The_Funniest_Joke_in_the_World
我想使用beautiful soup 解析每个链接,并将解析后的内容存储到我的数据框的另一列中。以下似乎运作良好:
def puller(mylink):
doc = requests.get(mylink)
return BeautifulSoup(doc.content, 'html5lib')
df['parsed'] = df.apply(lambda x: puller(x))
df['mytag'] = df.parsed.apply(lambda x: x.find_all('p'))
问题是我正在获取列表,我需要处理其中的文本。特别是,我试图仅将提及joke 的段落保留在文本中的某处,但我无法这样做。
def extractor(mylist):
return list(filter(lambda x: re.search('joke', x), mylist))
df.mytag.apply(lambda x: extractor(x))
TypeError: expected string or bytes-like object
在这里进行的最佳方式是什么?
谢谢!
【问题讨论】:
-
这可能不是爆炸的正确用例。此外,您应该通过示例阐明
df['mytag']的性质。 -
添加了更多信息。谢谢
-
把问题简单明了
标签: python html pandas beautifulsoup