这是我第一次尝试用硒刮。
我收集了我想要的东西,但是我想将其传递给pandas数据框以便进行一些计算。
下面的示例代码是我如何获取数据;
(这是财务数据,[2]和[3]分别代表年份(2016、2017))
nf1 = driver.find_element_by_xpath('//*[@id="tbodyMTablo"]/tr[84]/td[2]').text
nf2 = driver.find_element_by_xpath('//*[@id="tbodyMTablo"]/tr[84]/td[3]').text
do_v1 = driver.find_element_by_xpath('//*[@id="tbodyMTablo"]/tr[2]/td[2]').text
do_v2 = driver.find_element_by_xpath('//*[@id="tbodyMTablo"]/tr[2]/td[3]').text
kvb_1 = driver.find_element_by_xpath('//*[@id="tbodyMTablo"]/tr[29]/td[2]').text
kvb_2 = driver.find_element_by_xpath('//*[@id="tbodyMTablo"]/tr[29]/td[3]').text
这是一个数值数据,但是存储为str(可能是因为.text),并且int(nf2)
或float(nf2
无效。
有没有什么方法可以存储为值?
(如果没有.text
,它将返回0)
刮取数值数据并将其存储在数据框中的正确方法是什么?
谢谢。
答案 0 :(得分:1)
尝试使用.get_attribute('innerHTML')而不是.text
编辑*
似乎您正在尝试将硒对象转换为int()。但是int需要转换字符串(仅包含数字)。
因此,您可以尝试像这样进行转换。
“此示例是关于在Wikipedia上的随机页面上的字段中抓取一个数字;请尝试使其适应您的代码。”
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://it.wikipedia.org/wiki/Internet#Nascita_del_World_Wide_Web_.281991.29')
scraped = driver.find_element_by_xpath('//span[@class="tocnumber" and contains(text(), "1")]')
print(int(scraped.get_attribute('innerHTML')))
driver.quit()