从webdriver中提取更多信息

时间:2014-05-14 09:51:02

标签: python selenium-webdriver

我编写了一个代码,用于从以下网站中提取移动模型

" http://www.kart123.com/mobiles/pr?p%5B%5D=sort%3Dfeatured&sid=tyy%2C4io&ref=659eb948-c365-492c-99ef-59bd9f0427c6"

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

driver = webdriver.Firefox()
driver.get("http://www.kart123.com/mobiles/pr?p%5B%5D=sort%3Dfeatured&sid=tyy%2C4io&ref=659eb948-c365-492c-99ef-59bd9f0427c6")
elem=[]
elem=driver.find_elements_by_xpath('.//div[@class="pu-title fk-font-13"]')
for e in elem:
 print e.text

一切正常,但问题出现在页面的末尾。它只显示第一页的内容。请你能帮我解决所有模型的问题。

2 个答案:

答案 0 :(得分:1)

好的,这将是一个重大的黑客,但是这里...当你向下滚动时,通过点击一个ajax脚本向你提供更多的手机,每次给你20多个。它击中的脚本是:

http://www.flipkart.com/mobiles/pr?p[]=sort%3Dpopularity&sid=tyy%2C4io&start=1&ref=8aef4a5f-3429-45c9-8b0e-41b05a9e7d28&ajax=true

注意你可以用你想要的

开始参数
from selenium import webdriver
from selenium.webdriver.common.keys import Keys

driver = webdriver.Firefox()

num = 1
while num <=2450:
    """
    This condition will need to be updated to the maximum number
    of models you're interested in (or if you're feeling brave try to extract
    this from the top of the page)
    """
    driver.get("http://www.flipkart.com/mobiles/pr?p[]=sort%3Dpopularity&sid=tyy%2C4io&start=%f&ref=8aef4a5f-3429-45c9-8b0e-41b05a9e7d28&ajax=true" % num)
    elem=[]
    elem=driver.find_elements_by_xpath('.//div[@class="pu-title fk-font-13"]')
    for e in elem:
        print e.text
    num += 20

你将获得127个请求,所以这将非常缓慢......

答案 1 :(得分:0)

您可以获得该页面的完整来源并根据它进行所有分析:

page_text = driver.page_source

页面应包含当前内容,包括JavaScript生成的内容。此刻要小心获取此内容,所有渲染都已完成(例如,您可能需要等待某些字符串的存在,最后会渲染)。