# my scraper script file
#-*- coding: utf-8 -*-
from selenium import webdriver
import csv
browser = webdriver.Firefox()
browser.get("http://web.com")
f = open("result.csv", 'w')
writer = csv.writer(f)
那么第一种方法
element = browser.find_element_by_xpath("xpath_addr")
temp = [element.get_attribute("innerHTML").encode("utf-8")]
print temp # ['\xec\x84\something\xa8']
writer.writerow(temp)
这将导致正确的csv文件与我的语言。한글)
但是第二种情况,我觉得有点不同
element = browser.find_element_by_xpath("xpath_addr")
temp = element.get_attribute("innerHTML").encode("utf-8")
print temp # "한글"
writer.writerow(temp)
然后csv文件充满了非字符的东西。这有什么区别?打印也会得到不同的结果,但为什么呢(这一定是问题所在,因为我对编码知之甚少)
首先,
writerow
接口需要一个类似列表的对象,因此第一个代码段对于这个接口是正确的。但是在您的第二个代码片段中,该方法假设您作为参数传递的字符串是一个列表-并以此进行迭代-这可能不是您想要的。您可以尝试writerow([temp])
,看看它应该与第一个案例的输出相匹配第二,我想警告您Python^{} 模块是notorious for headaches with unicode,基本上它是未被导入的。如果需要支持unicode,请尝试使用^{} 作为csv模块的替代品。然后,在将字符串写入文件之前不需要对其进行编码,只需直接写入unicode对象,并让库处理编码
相关问题 更多 >
编程相关推荐