You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在循环中调用DataFrame的经纬度值实现Twitter数据爬取

批量通过经纬度爬取Twitter数据

问题背景

已从谷歌表格加载经纬度数据到DataFrame,需要替换固定经纬度,遍历DataFrame每行的经纬度值,批量爬取指定关键词的Twitter数据。

步骤1:正确加载经纬度数据到DataFrame

先修正数据加载代码,将表格数据赋值给df变量,确保后续循环能正常调用:

worksheet = gc.open('LA Grid').sheet1
rows = worksheet.get_all_values()
print(rows)

import pandas as pd
# 将表格数据转为DataFrame并赋值给df
df = pd.DataFrame.from_records(rows)

注意:确保你的DataFrame中,每行包含纬度、经度两列数据(可根据实际列索引调整后续代码)。

步骤2:修改循环逻辑,批量爬取数据

调整原循环代码,遍历DataFrame的每一行,动态生成经纬度搜索参数,将每次爬取的结果收集后合并为最终数据集:

# 先安装依赖(如果未安装)
# !pip install snscrape

import pandas as pd
import snscrape.modules.twitter as sntwitter
import itertools

total = []
# 遍历DataFrame的每一行
for index, row in df.iterrows():
    # 从当前行提取纬度和经度(假设第0列是纬度,第1列是经度,根据实际列位置调整)
    latitude = row[0]
    longitude = row[1]
    # 拼接成Twitter搜索要求的地理格式:"纬度, 经度, 搜索半径"
    loc = f"{latitude}, {longitude}, 30km"
    
    # 爬取当前经纬度下含"parking lot"关键词的Twitter数据,最多50条
    current_data = pd.DataFrame(itertools.islice(
        sntwitter.TwitterSearchScraper(f'parking lot geocode:"{loc}"').get_items(), 
        50
    ))[['date', 'content']]
    
    # 将当前爬取的数据添加到总列表中
    total.append(current_data)

# 合并所有批次的数据为一个DataFrame
final_df = pd.concat(total, ignore_index=True)
# 查看前几行结果
final_df.head()

关键说明

  • 列索引调整:如果你的DataFrame中纬度、经度所在的列不是第0、1列,需要修改row[0]、row[1]为对应的列索引或列名(比如row['纬度'])。
  • 搜索参数:可根据需求修改关键词(parking lot)、搜索半径(30km)和爬取数量(50)。
  • 异常处理:如果需要应对网络错误或无效经纬度,可以在循环中添加try-except块,避免程序中断。

内容的提问来源于stack exchange,提问作者Valeria Ospital

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 05:30:42