首页 > python+selenium 爬网页数据,function里面的数据怎么返回呢?

python+selenium 爬网页数据,function里面的数据怎么返回呢?

比如网页http://tjcredit.gov.cn/platform/saic/viewBase.ftl?entId=00011f7153ee8a1e4f8e48eb44ce2954
我要获取登记信息。在源代码里面是这样的:

</div>
        </div>
        <script type="text/javascript" src="../../static/js/jquery-1.8.3.min.js"></script>
        <script type="text/javascript">
            $(function(){
                $('#fenlei li').eq(0).click(function(){
                                         $(this).parent().children().removeClass();
                    $(this).addClass('on');
                    
                    var gsdjlx = "16";
                    if(parseInt(gsdjlx,10)>=19){
                        $("#topNav").html("<li class='on'>登记信息</li>");
                        $("#contentMain").load("/platform/saic/baseInfo.do",{entId:"00011f7153ee8a1e4f8e48eb44ce2954",entType:"16"});
                        return false;
                    }
                    
                    $.ajax({
                        url:"/platform/saic/topInfoClass.json?departmentId=scjgw&entId=00011f7153ee8a1e4f8e48eb44ce2954",
                        dataType:'json',
                        success : function(data){
                            var $topNav= $("#topNav");
                            var dom = [];
                            for(var i = 0;i < data.length;i++){
                                var d = data[i];
                                dom.push('<li url="'+d.url+'" isDefault="'+d.isDefault+'">'+ d.name +'</li>');
                            }
                            $topNav.html(dom.join('')).children().click(function(){
                                $(this).parent().children().removeClass();
                                $(this).addClass('on');
                                var url = $(this).attr('url');

                                loadContent(url);


                            }).filter('[isDefault="1"]').click();
                        }
                    })
                })
    $('#fenlei li').eq(0).click();        
            
})


            function loadContent(url){
                $.ajax({
                    url :url,
                    type:'get',
                    dataType:'html',
                    success : function(data){
                        if(data == ""){
                            data = '<div class="no-message"></div>';
                        }
                        $("#contentMain").html(data);
                    }
                });
            }
            

我用selenium到这个网页,不知道怎么才能获取?求解。

#coding=utf-8
import sys
from selenium import webdriver
from selenium.webdriver.common.proxy import *
import time
reload(sys)
sys.setdefaultencoding('utf-8')

urlindex="http://tjcredit.gov.cn/platform/saic/index.ftl"
browser=webdriver.Firefox()
browser.get(urlindex)
time.sleep(2)

browser.find_element_by_id("queryName1").clear()
browser.find_element_by_id("queryName1").send_keys("120103600211318")
browser.find_element_by_xpath('//input[@class="submit" and @type="button"]').click()
print "captcha is :  "
captcha=raw_input()

browser.find_element_by_id("vcode").send_keys(captcha)
browser.find_element_by_xpath('//input[@value="查询" and @type="submit"]').submit()

time.sleep(2)
browser.find_element_by_xpath('//span[@class="company-name"]').click()
browser.find_element_by_xpath('//li[]') ###########这里不知道怎么办了


time.sleep(2)
browser.quit()

要获取到登记信息,只需要用到 GET 参数中的 entId,带上这个参数请求这个 url 就行了,这些都不用去网页里找,直接先在浏览器控制台的网络面板的 XHR 请求里就能看到:

http://tjcredit.gov.cn/platform/saic/baseInfo.json?departmentId=scjgw&infoClassId=dj&entId=00011f7153ee8a1e4f8e48eb44ce2954

要是有jquery基础的话直接用pyquery吧,和jquery语法一样

Q = pyquery.PyQuery(text)
text就是你的网页html,把Q当成jquery的$
比如要取ID为abc的对象,则Q('#abc')


用python写爬虫的很多时间浪费在编写xpath上,我发起了一个开源项目,可以把调测xpath的时间省掉,可以看我这篇文章:https://.com/a/1190000005151856

【热门文章】
【热门文章】