我有一个包含潜在客户(姓名)的数据框。 我正在尝试在网络上搜索有关这些潜在客户的相关数据。
我正在使用 beautifulsoup 和 urllib 来抓取数据。 网址如下所示:
url = u'https://www.website.com/SearchResults?query=' + quote(str(df['name']))
问题是,对于每个潜在客户,我得到完全相同的数据,这是检索数据的数据帧中最后一个潜在客户的数据。
每当我使用字符串名称而不是 str(df['name']) 时,我都会获得特定线索的正确数据,如下所示:
url = u'https://www.website.com/SearchResults?query=' + quote('this+is+a+leads+name')
我认为这个问题与 str(df['name']) 特别相关的原因是,每当我删除它时,我都会成功获取数据,否则,我会得到 100,000 个线索相同的数据。唯一的问题是,为了使用数据帧中的线索,我需要使用 str。
最佳答案
str(df)
将返回数据帧的文本表示形式。例如
>>> pd.DataFrame({"col1":[1,2,3,4], "name":["row1","row2","row3","row4"]})
col1 name
0 1 row1
1 2 row2
2 3 row3
3 4 row4
将返回上述数据框的文本表示
col1 name
1 row1
2 row2
3 row3
4 row4
因此,要进行按行操作,最好使用数据帧中的 apply
函数。
>>> def search_url(search_lead):
... url = u'https://www.website.com/SearchResults?query=' + search_lead
... print(url) #You can do your operation here
通过使用上面的函数,使用apply
>>> df.name.apply(lambda x: search_url(x))
https://www.website.com/SearchResults?query=row1
https://www.website.com/SearchResults?query=row2
https://www.website.com/SearchResults?query=row3
https://www.website.com/SearchResults?query=row4
0 None
1 None
2 None
3 None
Name: name, dtype: object
您可以在该函数内进行网页抓取。希望这个回答对您有帮助。
关于python - 为什么使用 str(df[col]) 会导致代码仅与单个记录相关?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64073752/