python - 为什么使用 str(df[col]) 会导致代码仅与单个记录相关?

标签 python pandas web-scraping beautifulsoup data-science

我有一个包含潜在客户(姓名)的数据框。 我正在尝试在网络上搜索有关这些潜在客户的相关数据。

我正在使用 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/

相关文章:

python - 将 Latex 表读入 Pandas DataFrame

python - 根据条件合并行

python - 读取数据时删除列包含某些字符串: python

javascript - 通过vba点击Href链接

python - 如何抓取 html 中的非文本?

Python 多处理 - 是否可以在各个进程之间引入固定时间延迟?

python - 创建单个 python 可执行模块

python / Pandas : concatenate two dataframes with multi index

python - 将数据框分解为子集/组的新数据框。从其他数据框创建数据子集/组的新数据框

Python在网页上查找文件下载链接