首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >写入selenium数据时空CSV

写入selenium数据时空CSV
EN

Stack Overflow用户
提问于 2021-11-30 14:54:11
回答 3查看 223关注 0票数 2

我第一次体验Selenium,并在一个著名的视频平台上做了一些教程。大多数情况下,它的工作非常可靠。但是,我在创建CSV但没有导出数据的几个页面上遇到了问题。CSV被“触摸”,但它不导出正常打印中显示的数据。

有人能帮我找到这个脚本的问题所在吗?

代码语言:javascript
复制
#_*_coding: utf-8_*_


from selenium import webdriver
import selenium
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
import csv
import os

os.chdir("C:\Selenium")
PATH = "chromedriver.exe"
driver = webdriver.Chrome(PATH)

driver.get("https://twitter-trends.iamrohit.in/")

try: 
    main = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.CLASS_NAME, "panel-body"))
    )
 
    main = (main.text)
 
    f = open('twitter.csv', 'wb')
    print(main, file = f)
    f.close()
    
    #print(main)

except:
    driver.quit()

driver.quit()

Python版本3.7.4,Selenium Versionm 3.141.0,Windows 10

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-11-30 15:51:15

调试您的代码,您将正确地获取数据。

代码语言:javascript
复制
   main = (main.text)
   print(main)
   f = open('twitter.csv', 'wb')

因此,错误是当您写入输出文件时。将代码替换为

代码语言:javascript
复制
main = (main.text)

with open('twitter.txt', 'wb', encoding='utf-8') as file1:
# Writing data to a file
    file1.writelines(main)

将工作,如果您检查打印您的汉字,将使写入输出文件失败。

票数 1
EN

Stack Overflow用户

发布于 2021-11-30 16:04:48

要刮掉推特趋势-全球表,可以使用Pandas中的DataFrame并使用下面的定位器策略将其写入csv文件

代码块:

代码语言:javascript
复制
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
import pandas as pd

driver.get("https://twitter-trends.iamrohit.in/")
driver.execute_script("return arguments[0].scrollIntoView(true);", WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//b[text()='Note:']"))))
headers = [my_elem.text for my_elem in WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, "thead > tr > th")))]
ranks = [my_elem.text for my_elem in WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located((By.XPATH, "//table[@id='twitter-trends']//tbody//tr//descendant::th[1]")))]
topics = [my_elem.text for my_elem in WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located((By.XPATH, "//table[@id='twitter-trends']//tbody/tr//descendant::th[2]/a")))]
volumes = [my_elem.text for my_elem in WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located((By.XPATH, "//table[@id='twitter-trends']//tbody/tr//descendant::th[3]")))]
df = pd.DataFrame(data=list(zip(ranks, topics, volumes)), columns=headers)
df.to_csv(r'C:\Data_Files\output_files\twitter.csv', index=False)
driver.quit()

CSV快照:

参考文献

您可以在以下网站找到几个相关的详细讨论:

票数 1
EN

Stack Overflow用户

发布于 2022-08-20 16:57:04

从硒进口selenium.webdriver.chrome.options进口工具从selenium.webdriver.chrome.service进口选项从selenium.webdriver.support.ui进口WebDriverWait从selenium.webdriver.common.by进口从selenium.webdriver.support进口expected_conditions进口熊猫作为pd Driver.get(“https://twitter-trends.iamrohit.in/"”)driver.execute_script(“返回arguments.scrollIntoView(True)”;",20).until(EC.visibility_of_element_located((By.XPATH,(driver,WebDriverWait“//btext()=‘Note:’”)( headers = my_elem.text for my_elem in WebDriverWait(driver,20).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR,"thead > tr >th“))20).until(EC.visibility_of_all_elements_located((By.XPATH,"//table@id='twitter-trends'//tbody//tr//descendant::th1")))]主题= [my_elem.text for my_elem in WebDriverWait(驱动程序,20).until(EC.visibility_of_all_elements_located((By.XPATH,)"//table@id='twitter-trends'//tbody/tr//descendant::th2/a")))] volumes = [my_elem.text for my_elem in WebDriverWait(驱动程序,20).until(EC.visibility_of_all_elements_located((By.XPATH,"//table@id='twitter-trends'//tbody/tr//descendant::th3")))] df =pd.DataFrame)(data=list(等级、主题、卷)),( df.to_csv(r'C:\Data_Files\output_files\twitter.csv',index=False) driver.quit()可以提供这个有用的推特趋势

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70171380

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档