【问题标题】:Web Scraping on a page网页抓取
【发布时间】:2017-11-06 12:15:02
【问题描述】:

我想在这个link 上刮桌子。我试图在页面加载后使用 selenium 获取数据,但没有成功。关于如何从该网页上抓取表格的任何其他想法?

编辑 -

我试过了

from selenium import webdriver
driver = webdriver.PhantomJS()
driver.get("https://steria.taleo.net/careersection/in_cs_ext_fs/jobsearch.ftl?lang=en&radiusType=K&location=462170431401&searchExpanded=true&radius=1") 
print(driver.find_element_by_class_name('table').text)
driver.close()

【问题讨论】:

  • 你试过什么?请张贴那个
  • @Exprator 刚刚做了。
  • 问题是你没有通过任何搜索条件,直到你通过关键字然后点击搜索按钮,结果才会出现,之后你可以得到表格
  • @Exprator 那么我应该使用 selenium 单击该搜索按钮然后查看结果吗?但是在我的浏览器中,我没有点击任何按钮,结果会在一段时间后加载
  • 如果我去你有的链接我没有看到结果,这意味着我们需要提供一些搜索条件来获取结果,所以你可以使用 selenium 传递数据然后得到结果

标签: python selenium web-scraping beautifulsoup


【解决方案1】:

由于表格内容是动态生成的,所以需要等到JavaScript执行后才能获取到需要的数据:

from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait as wait
from selenium import webdriver

driver = webdriver.PhantomJS()
driver.get("https://steria.taleo.net/careersection/in_cs_ext_fs/jobsearch.ftl?lang=en&radiusType=K&location=462170431401&searchExpanded=true&radius=1")
table = wait(driver, 10).until(EC.presence_of_element_located(("xpath", "//table[@id='jobs' and ./tbody/tr]")))
print(table.text)
next_button = driver.find_element_by_link_text("Next")
next_button.click()

wait(driver, 5).until(lambda x: next_button.get_attribute("aria-disabled") == "true")
table = wait(driver, 10).until(EC.presence_of_element_located(("xpath", "//table[@id='jobs' and ./tbody/tr]")))
print(table.text)
driver.close()

【讨论】:

  • 我怎样才能解析和保存表格的第二页?
  • 同理:只需将driver.find_element_by_link_text("Next").click()放在table = wait(driver, 10).until(EC.presence_of_element_located(("xpath", "//table[@id='jobs' and ./tbody/tr]")))之前
  • 同一页被再次解析并打印,无法打印第二页
  • Next 按钮似乎有问题。最简单的解决方案是在driver.find_element_by_link_text("Next").click() 之后添加简单的time.sleep(1)
  • 您可能错误地将该字符串实现为当前(使用wait(driver, 5).until(lambda x: next_button.get_attribute("aria-disabled") == "true"))和以前的(使用time.sleep(1))代码在我这边运行良好......
【解决方案2】:

【讨论】:

  • 页面在javascript运行后加载。它没有嵌入其中。
猜你喜欢
  • 2020-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-07
  • 2021-01-12
  • 2019-03-08
相关资源
最近更新 更多