【发布时间】:2018-01-11 21:31:01
【问题描述】:
我是 Python 和 selenium 的新手,所以在这里无法提出解决方案:
我尝试从以下网站接收信息:“http://avi2.osamsterdam.nl/index.mpl”
这个表应该被带入一个数据框(等等):table example 到目前为止,我的代码能够选择相应的邻域(buurt)并打开它的数据表。目标是稍后循环这个过程,但我可以自己做。
问题是,表格的格式很奇怪,这使得很难“抓取”变量。此外,我仍在困惑如何将数据放在一起,而不会弄乱信息。
有什么办法可以抓取这些物品(也许是一个例子)? 你会推荐我做什么,把它变成类似的格式(日期列标题,索引作为行名)?
这是我的代码:
website = "http://avi2.osamsterdam.nl/index.mpl"
driver.get(website) # runs webdriver
buurt='//a[@class="expandable" and contains(text(),"Buurt")]'
area = driver.find_element_by_id("geo")
area.click()
#select buurt
option=men_menu = WebDriverWait(driver, 5).until(EC.visibility_of_element_located((By.XPATH, buurt)))
ActionChains(driver).move_to_element(option).perform()
buurten = driver.find_element_by_xpath('//*[@id="geo"]/li/ul/li[3]')
x = buurten.find_elements_by_tag_name("li")
opt_l = []
for e in x:
print (e.text)
#opt_l.append(e.text)
x[1].click() # later repeat for all!
# How to select indiviudal items and make sure it goes into dataframe?
# does not work as of here:
table = driver.find_element_by_id("kenmerkoverzicht")
dates = table.find_elements_by_css_selector('/th')
for e in dates:
print (e.text)
【问题讨论】:
-
'/th' 不是 css 选择器,请尝试使用 'th'
-
将整个表传递给pandas
read_html方法pandas.pydata.org/pandas-docs/stable/generated/…你不需要自己解析 -
@BreaksSoftware:它仍然没有在最后一行打印任何东西......
标签: python selenium dataframe web-scraping