Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在Python中使用JS隐藏的网站上抓取一些内容?_Javascript_Python_Html_Selenium_Web Scraping - Fatal编程技术网

Javascript 如何在Python中使用JS隐藏的网站上抓取一些内容?

Javascript 如何在Python中使用JS隐藏的网站上抓取一些内容?,javascript,python,html,selenium,web-scraping,Javascript,Python,Html,Selenium,Web Scraping,我最近正在学习一门关于使用Python抓取网站的课程。网站URL为。这是一个慈善网站。我想搜集的内容是关于这个项目的贡献者。我确信它使用了一些JS技术,我不知道它是如何工作的 我试图分析html源代码页,但我只发现当我点击“更多”按钮时,整个页面的源代码就改变了。因此,我可以刮的内容,除非我点击了JS链接。但我只是不知道如何在python中模拟web浏览器 通过询问我班上的导师,我被告知是使用一个名为request的模块还是另一个名为mechanize的模块,但这些都不能解决我的问题。我很想使用

我最近正在学习一门关于使用Python抓取网站的课程。网站URL为。这是一个慈善网站。我想搜集的内容是关于这个项目的贡献者。我确信它使用了一些JS技术,我不知道它是如何工作的

我试图分析html源代码页,但我只发现当我点击“更多”按钮时,整个页面的源代码就改变了。因此,我可以刮的内容,除非我点击了JS链接。但我只是不知道如何在python中模拟web浏览器

通过询问我班上的导师,我被告知是使用一个名为request的模块还是另一个名为mechanize的模块,但这些都不能解决我的问题。我很想使用名为selenium的模块,但它太复杂了,我迷路了


有没有人可以给我一些建议,如何使它的工作。我真的是一个网站初学者,以及网页抓取。而且我根本不知道如何分析html并获得贡献者列表。

这个特定的网站有很多动态的东西。例如,为了查看更多链接,您需要将页面向下滚动几次。然后,单击“更多”后,您需要等待它处理。您可以从这里开始,它实际上是一个工作代码:

from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
import time


driver = webdriver.Firefox()
driver.get('http://www.kiva.org/lend/742129')

for _ in xrange(5):
    driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
    time.sleep(1)

more = WebDriverWait(driver, 10).until(lambda driver : driver.find_element_by_id('showMoreLenders'))
more.click()

time.sleep(2)

# get the lenders
for lender in driver.find_elements_by_xpath('//section[@id="theLenders"]//li//div[@class="name"]/a'):
    print lender.text

driver.close()
它在页面上打印了72个贷款人的名字,我不会把他们贴在这里,因为这些都是名字


我觉得那些时间不可靠。sleep呼叫是可靠的,但举个例子来说,这没问题-您可能需要切换到使用WebDriverWaits,而不是显式延迟。

我明白了,谢谢。因此,它更像是模拟人类浏览网页的整个过程。与我从课程中学到的完全不同。谢谢