我最近正在学习使用Python抓取网站的课程。网站网址为" http://www.kiva.org/lend/742129"。这是一个慈善网站。我要抓的内容是关于这个项目的贡献者。我相信它使用了一些JS技术,我不知道它是如何工作的。
我试图分析html源页面,但我发现当我点击“更多”按钮时,整个页面源只是更改了。所以除非我点击JS链接,否则我可以抓取内容。但我不知道如何模拟python中的Web浏览器。
通过询问班上的导师,我被告知是否使用一个名为“请求”的模块或另一个名为“机械化”的模块,但这对我来说都没有。我厌倦了使用名为selenium的模块,但它很复杂,我迷路了..
是否有人可以给我一些关于如何使其有效的建议。我真的是网站和网络抓取的初学者。我根本不知道如何分析HTML并获得贡献者'列出来。
答案 0 :(得分:2)
这个特定的网站有很多动态的东西在继续。例如,要查看More
链接,您需要多次向下滚动页面。然后,点击More
后,您需要等待它处理。这是你可以开始的地方(实际上它是一个有效的代码):
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个贷方(我不会在这里发布,因为这些是名称)。
我发现这些time.sleep()
次呼叫不可靠,但这可以作为一个例子 - 您可能需要切换到使用WebDriverWait
而不是明确的延迟。