我已经使用Selenium从http://www.fedsdatacenter.com/federal-pay-rates/index.php?n=&l=&a=SECURITIES+AND+EXCHANGE+COMMISSION&o=&y=all刮掉联邦员工职位和薪资信息的动态Javascript表格。 (注意:这些都是公有领域的数据,所以不用担心个人信息)。从刮脸的Javascript表格列表中创建数据框
我试图将它放入熊猫DF进行分析。我的问题是我的硒的输入数据是打印的清单:
[u'DOE,JON'], [u'14'], [u'SK'], [u'$176,571.00'], [u'$2,000.00'], [u'SECURITIES AND EXCHANGE COMMISSION'], [u'WASHINGTON'], [u'GENERAL ATTORNEY'], [u'2012']], ...
我想要得到的是,处理的记录 为任意数量DF:
NAME GRADE SCALE SALARY BONUS AGENCY LOCATION POSITION YEAR
Doe, Jon 14 SK $176,571.00 $2,000.00 SEC DC ATTY 2012
.
.
.
我我试图将这个列表转换成一个字典,使用col函数名称作为元组和数据作为列表等的zip()函数,尽管它已经很好地了解了Python的特性,但都无济于事。在获得数据之后应该做什么?或者我应该以不同的方式阅读数据?
目前,刮板代码:
from selenium import webdriver
path_to_chromedriver = '/Users/xxx/Documents/webdriver/chromedriver' # change path as needed
browser = webdriver.Chrome(executable_path = path_to_chromedriver)
url = 'http://www.fedsdatacenter.com/federal-pay-rates/index.php'
browser.get(url)
inputAgency = browser.find_element_by_id('a')
inputYear = browser.find_element_by_id('y')
# Send data
inputAgency.send_keys('SECURITIES AND EXCHANGE COMMISSION')
inputYear.send_keys('All')
# Select 'All' from Years element
browser.find_element_by_css_selector('input[type=\"submit\"]').click()
browser.find_element_by_xpath('//*[@id="example_length"]/label/select/option[4]').click()
SMRtable = browser.find_element_by_id('example')
scrapedData = []
for td in SMRtable.find_elements_by_xpath('.//td'):
scrapedData.append([td.get_attribute('innerHTML')])
print td.get_attribute('innerHTML')
这是伟大的,谢谢!还需要更好地掌握Javascript。 – user2559269
实际上,发现一个暗示抓取仍然有必要的进一步限制 - 而“iTotalDisplayRecords”:“19919”,由此产生的实际数据帧仅包含100行,对应于行选择元素的100行的最大选项允许。知道任何解决这个问题的方法? – user2559269
你可以试试这个网址http://www.fedsdatacenter.com/federal-pay-rates/output.php?n =&a = SECURITIES%20AND%20EXCHANGE%20COMMISSION&l =&o =&y = all&sEcho = 4&iColumns = 9&sColumns =&iDisplayStart = 0&iDisplayLength = 100000'并且可能尝试更改最后一个数字“100000” – jezrael