python刮了ajax内容

时间:2017-04-03 13:48:18

标签: python selenium web-scraping

我想用费率解析网站,但我无法从<td>元素中取出数据。

我写了一个简短的代码来测试哪个获得第一行数据表:

from selenium import webdriver

driver = webdriver.Firefox()
driver.get('https://www.gpw.pl/wskazniki_spolek_full')
table = driver.find_elements_by_xpath("//table[@class='tab03']/tbody/tr")[4].text
print table

driver.quit()

我得到了结果:

2 PLNFI0800016 141 08OCTAVA 42 786 848 44,07 63,86 2016-12-31 H 0,69 27,80 ---

但是我希望通过<td>

的所有表格遍历<tr>标记中的所有class='tab03'元素
table = driver.find_elements_by_xpath("//table[@class='tab03']/tbody/tr")

for el in table:
    col_id =  el.find_element_by_tag_name('td')[1].text
    col_kod = el.find_element_by_tag_name('td')[2].text

    print("{}".format(col_id, col_kod))

driver.quit()

但我收到错误:selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: td

1 个答案:

答案 0 :(得分:1)

有些标题行中没有td个元素,请跳过它们:

rows = driver.find_elements_by_xpath("//table[@class='tab03']/tbody/tr")

for row in rows[3:]:
    cells = row.find_elements_by_tag_name('td')
    col_id = cells[0].text
    col_kod = cells[1].text

    print("{}".format(col_id, col_kod))

另请注意,要访问td单元格,请使用find_elements_by_tag_name()并按索引(从0开始)获取所需的元素。