excel - 'for' 命令并通过进行网络抓取来用 pandas 填充 excel 表
问题描述
使用 selenium 库,我可以打开并从网站读取一些信息,但是在将这些读取的数据传输到 Excel 表时,我无法用“for command”填充所有表,因为在“for command”结束时和保存后数据框为“csv”,我看到,对于唯一的最后一个 i 数字,数据被放入处理中,对于其他“i”,填充表格被跳过。我不知道那是什么原因。
如何为所有 i 数字填写表格?
我的脚本是:
from selenium import webdriver
import pandas as pd
inpExcelFile = 'sites of svbilgi kizilirmak.csv'
websites = pd.read_csv(inpExcelFile)
#csvfile can be downloaded from 'https://www.evernote.com/shard/s355/sh/3ba4c779-803c-4f5a-b402-a30ec973c48e/75f2c9aea94454e1'
driver = webdriver.Chrome(executable_path=r'D:\chromedriver.exe')
for i in range(1,3):
driver.get(str(websites['sitelist'][i]))
code_and_name=driver.find_element_by_id("Span1").text
approximate_elevation = driver.find_element_by_xpath("//table[@id='Table3']/tbody/tr[3]/td[2]").text
df = pd.DataFrame(columns=['code_and_name', 'approximate_elevation']
df.at[i,'code_and_name']= str(code_and_name)
df.at[i,'approximate_elevation']= str(approximate_elevation)
df.to_csv('observed_data_list.csv', encoding='ISO-8859-9')
解决方案
问题是我将“df = pd.Dataframe”定位在内部以获取命令。我只是把它放在外面并放在前面的命令中,然后问题就解决了。
推荐阅读
- string - Elixir - 如何检查字符串是否包含文本或是否为数字(“453”)
- javascript - 打开街道地图,并回调 OpenLayer
- angular - 类型“any[]”上不存在属性“id”
- android - 无法在 Android 项目中加载预构建的 OpenSSL 库
- c - 与人类级别的方法相比,代码进行了更多的交换
- flutter - 在飞镖中使用三点运算符扩展列表
- javascript - 将 Google 工作表日期与 Google 日历活动日期进行比较
- ios - WebFriverAgentRunner 构建无法监听 USB
- angular - 反应形式的数据绑定
- javascript - Leaflet.Draw 使用 GeoJson 保存数据