【发布时间】:2017-07-27 12:07:21
【问题描述】:
我正在一些网页中搜索关键字。再次感谢@Abdou 帮助我处理silent error handling!我给你举个例子:
# this is basically what I do
import pandas as pd
import requests
data = [{"URLs" : "https://www.mercedes-benz.de", "electric" : 1},
{"URLs" : "https://www.audi.de", "electric" : 0},
{"URLs" : "https://ww.audo.de", "electric" : 0},
{"URLs" : "NaN", "electric" : 0}]
def contains_keywords(link, keywords):
try:
output = requests.get(link).text
return int(any(x in output for x in keywords))
except:
return "Wrong/Missing URL"
df = pd.DataFrame(data)
mykeywords = ('car', 'vehicle', 'automobile')
df['extra_column'] = df.URLs.apply(lambda l: contains_keywords(l, mykeywords))
如您所见,我请求存储在df.data 中的URL,并从mykeywords 中搜索关键字并将二进制结果存储在extra_column 中。该脚本基本上产生以下内容:
# URLs electric extra_column
# 0 https://www.mercedes-benz.de 1 1
# 1 https://www.audi.de 0 1
# 2 https://ww.audo.e 0 0
# 3 NaN 0 Wrong/Missing URL
到目前为止,我只知道,如果我找到一个关键字。但我想知道我找到了哪些关键字——无需为mykeywords 中的每个关键字单独运行contains_keywords()。有没有办法为每个关键字创建一个新列并将结果(1 = 找到关键字)存储在DataFrame 中?即:我需要在df 中为每个关键字添加额外的列。
【问题讨论】:
-
“我想知道,我找到了哪些关键字...”表示您需要在
df中为 each 关键字添加额外的列? -
嗨,Dmitriy,这正是我想要的!每个关键字对应一列。那可能吗?我尝试了我所知道的一切,但到目前为止我还没有锻炼出来。抱歉,我的问题不清楚。我会相应地编辑它。
标签: python-3.x pandas web-scraping