20150626_Andriod_02_ListView2_列表与详细信息

android listview

参考地址:

http://www.cnblogs.com/zhengbeibei/archive/2013/05/14/3078805.html
  http://xys289187120.blog.51cto.com/3361352/657171/
  http://jeyechao.iteye.com/blog/1149127

F9_GridView -> Fr_02_view_s1 -> Fr_05_view_s2

************************************************************************
主表

package com.example.ht;

import android.support.v7.app.ActionBarActivity;
import android.text.method.ScrollingMovementMethod;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.content.Intent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

import java.io.IOException;

import org.ksoap2.SoapEnvelope; 
import org.ksoap2.serialization.SoapObject; 
import org.ksoap2.serialization.SoapSerializationEnvelope; 
import org.ksoap2.transport.HttpTransportSE; 
import org.xmlpull.v1.XmlPullParserException;

//import android.os.Bundle; 
import android.os.Handler; 
import android.os.Looper; 
import android.os.Message; 
import android.os.StrictMode; 
import android.app.Activity; 
//import android.view.Menu; 
//import android.view.View; 
//import android.view.View.OnClickListener; 
//import android.widget.Button; 
import android.widget.EditText; 
import android.widget.TextView;

import java.util.HashMap;

public class F9_GridView extends ActionBarActivity {
 
    private EditText et_phone; 
    private TextView tv_result; 
    private Button btn_query;
   
    private String str_1, str_2;

@Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_f9_grid_view);
  
  
  initView();
  tv_result.setMovementMethod(ScrollingMovementMethod.getInstance());
 }
 
 ///////////////////////////
 private void initView() { 
        tv_result = (TextView) findViewById(R.id.tvResult); 
        et_phone = (EditText) findViewById(R.id.editText_f9_number); 
        btn_query = (Button) findViewById(R.id.btn_c2); 
        btn_query.setOnClickListener(new OnClickListener() { 
 
            @Override 
            public void onClick(View v) { 
                // TODO Auto-generated method stub 
                String phone = et_phone.getText().toString().trim(); 
                //if ("".equals(phone) || phone.length() < 7) { 
                if ("".equals(phone)) { 
                    et_phone.setText("您输入为空"); 
                    et_phone.requestFocus(); 
                    tv_result.setText(""); 
                    return; 
                } 
                getRemoteInfo(phone); 
            } 
        });
       
       
    } 
 
    /**
     * 查询号码段归属地的方法
     * 
     * @param phone
     *            手机号码段
     */ 
    public void getRemoteInfo(final String phone) { 
        new Thread(new Runnable() { 
             
            @Override 
            public void run() { 
                // TODO Auto-generated method stub 
                // 命名空间 
                String nameSpace = "http://tempuri.org/"; 
                // 调用方法的名称 
                //String methodName = "selectAllCargoInfor"; 
                String methodName = "Return_master";
                // EndPoint 
                String endPoint = "http://192.168.1.91:8028/an_sql_test1.asmx"; 
                // SOAP Action 
                // String soapAction = "http://192.168.1.91:8028/an_sql_test1.asmx/selectAllCargoInfor"; 
                String soapAction = "http://192.168.1.91:8028/an_sql_test1.asmx/Return_master";
                // 指定WebService的命名空间和调用方法 
                SoapObject soapObject = new SoapObject(nameSpace, methodName); 
                // 设置需要调用WebService接口的两个参数mobileCode UserId 
                //soapObject.addProperty("mobileCode", phone); 
                //soapObject.addProperty("userId", "");
                //soapObject.addProperty("Ts_01", ""); 
                //soapObject.addProperty("Ts_02", "");
                //soapObject.addProperty("Ts_03", "");
                //soapObject.addProperty("Ts_06", "");
                // 生成调用WebService方法调用的soap信息,并且指定Soap版本 
                SoapSerializationEnvelope envelope = new SoapSerializationEnvelope( 
                        SoapEnvelope.VER12); 
                envelope.bodyOut = soapObject; 
                // 是否调用DotNet开发的WebService 
                envelope.dotNet = true; 
                envelope.setOutputSoapObject(soapObject); 
                HttpTransportSE transport = new HttpTransportSE(endPoint); 
                try { 
                    transport.call(soapAction, envelope); 
                } catch (IOException e) {
                //} catch (Exception e) {
                    // TODO Auto-generated catch block 
                    e.printStackTrace(); 
                }
               
                catch (XmlPullParserException e) { 
                    // TODO Auto-generated catch block 
                    e.printStackTrace(); 
                } 
               
               
               
                /*
                // 获取返回的数据 
                SoapObject object = (SoapObject) envelope.bodyIn; 
                // 获取返回的结果

String result = object.getProperty(0).toString(); 
                Message message = handler.obtainMessage(); 
                message.obj = result; 
                handler.sendMessage(message);
                */
               
               
               
                /*
                SoapObject object = (SoapObject) envelope.getResponse();
                //如果获取的是个集合,就对它进行下面的操作
                if(object.getName()=="anyType")
                {
                 //遍历Web Service获得的集合
                for(int i=0;i<object.getPropertyCount();i++){
                
                 //MFirst m =new MFirst();
              
                 //获取单条的数据
                 SoapObject soapChilds =(SoapObject)soapObject.getProperty(i);
                
                 //对单个的数据进行再次遍历,把它的每行数据读取出来
                 for(int k=0;k<soapChilds.getPropertyCount();k++)
                 {
                 PropertyInfo propertyInfo = new PropertyInfo();
                 soapChilds.getPropertyInfo(k, propertyInfo);
                //获取实体类的所有属性
                 Field[] field = m.getClass().getDeclaredFields(); 
                //遍历所有属性
                     for(int j=0 ; j<field.length ; j++){    
                    //获取属性的名字
                            String name = field[j].getName();   
                */
               
               
                /*
                SoapObject result2 = (SoapObject) envelope.getResponse();
                result2 = (SoapObject)result2.getProperty(1);
                result2 = (SoapObject)result2.getProperty(0);
                for(int i=0;  i< result2.getPropertyCount(); i++ ){
                HashMap<String, String> map=new HashMap<String, String>();
                SoapObject soap = (SoapObject) result2.getProperty(i);
                String Ts_01 =soap.getProperty("Ts_01").toString();
                String Ts_02 =soap.getProperty("Ts_02").toString();
                String Ts_03 =soap.getProperty("Ts_03").toString();
                String Ts_06 =soap.getProperty("Ts_06").toString();
                }
               
                Message message = handler.obtainMessage(); 
                message.obj = result2; 
                handler.sendMessage(message);
                */
               
               
                // 获取返回的数据 
                SoapObject object = (SoapObject) envelope.bodyIn; 
                // 获取返回的结果

String result = object.getProperty(0).toString(); 
                Message message = handler.obtainMessage(); 
                message.obj = result; 
                handler.sendMessage(message);
               
                /////////
            } 
        }).start(); 
    } 
    private Handler handler = new Handler(){ 
        public void handleMessage(android.os.Message msg) { 
            // 将WebService得到的结果返回给TextView
            //tv_result.setText(msg.obj.toString()); 
         
         str_1 = msg.obj.toString();
         str_2 = str_1.replace("anyType{","");
         str_1 = str_2.replace("}","");
         str_2 = str_1.replace("string=","");
         //str_1 = str_2.replace(";","\r\n");
         str_1 = str_2.replace(";",",");
         tv_result.setText(str_1);
         
         /////////---s1---/////////
         Intent intent = new Intent(F9_GridView.this,Fr_02_view_s1.class);
            Bundle bundle = new Bundle(); //通过Bundle实现数据的传递:
            bundle.putString("key_view_s1", str_1.toString());
            intent.putExtras(bundle);
            startActivity(intent);  
            /////////------/////////
           
         /////////--s2----/////////
         //Intent intent = new Intent(F9_GridView.this,Fr_05_view_s2.class);
            //Bundle bundle = new Bundle(); //通过Bundle实现数据的传递:
            //bundle.putString("key_view_s1", str_1.toString());
            //intent.putExtras(bundle);
            //startActivity(intent);  
            /////////------/////////
           
        }; 
    };
 ///////////////////////////

@Override
 public boolean onCreateOptionsMenu(Menu menu) {
  // Inflate the menu; this adds items to the action bar if it is present.
  getMenuInflater().inflate(R.menu.f9__grid_view, menu);
  return true;
 }

@Override
 public boolean onOptionsItemSelected(MenuItem item) {
  // Handle action bar item clicks here. The action bar will
  // automatically handle clicks on the Home/Up button, so long
  // as you specify a parent activity in AndroidManifest.xml.
  int id = item.getItemId();
  if (id == R.id.action_settings) {
   return true;
  }
  return super.onOptionsItemSelected(item);
 }
}

************************************************************************
************************************************************************
列表

package com.example.ht;

import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
//////////////////////////////////
import android.app.ListActivity;
import android.content.Intent;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.os.Bundle;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView;

//ws//
import android.support.v7.app.ActionBarActivity;
import android.text.method.ScrollingMovementMethod;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.content.Intent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

import java.io.IOException;

import org.ksoap2.SoapEnvelope; 
import org.ksoap2.serialization.SoapObject; 
import org.ksoap2.serialization.SoapSerializationEnvelope; 
import org.ksoap2.transport.HttpTransportSE; 
import org.xmlpull.v1.XmlPullParserException;

//import android.os.Bundle; 
import android.os.Handler; 
import android.os.Looper; 
import android.os.Message; 
import android.os.StrictMode; 
import android.app.Activity; 
//import android.view.Menu; 
//import android.view.View; 
//import android.view.View.OnClickListener; 
//import android.widget.Button; 
import android.widget.EditText; 
import android.widget.TextView;

import java.util.HashMap;
//ws//

//////////////////////////////////

public class Fr_02_view_s1 extends ActionBarActivity {
    //////////////////////////////////
 private ListView mListView = null;
 private ArrayAdapter myAdapter = null;
 
 private String str_from;
 private String str_id, str_to;
    //////////////////////////////////
 
 private  static String[] db_string=null;
 private  static final String[] COUNTRIES=new String[]{"中国","俄罗斯","英国","法国","中国","俄罗斯","英国","法国"};
 
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_fr_02_view_s1);
  
        /////////------/////////
  Bundle bunde = this.getIntent().getExtras();
  str_from = bunde.getString("key_view_s1").toString();
  db_string =str_from.split(",");
        /////////------/////////
  
  //setContentView(R.layout.main); 
        //设置一个Adapter 
  mListView = (ListView) findViewById(R.id.listView1);//得到ListView对象的引用 /*为ListView设置Adapter来绑定数据*/

// mListView.setAdapter(new ArrayAdapter<String>(this,
   //               android.R.layout.simple_expandable_list_item_1, COUNTRIES));
  
  mListView.setAdapter(new ArrayAdapter<String>(this,
                    android.R.layout.simple_expandable_list_item_1, db_string));
  
       
  ///////////////////条目选中///////////////////
        ///////////////////
  mListView.setOnItemClickListener(new OnItemClickListener() { 
         @Override 
         public void onItemClick(AdapterView<?> adapterView, View view, int position, 
             long id) { 
         //Toast.makeText(Fr_02_view_s1.this,"您选择了" + db_string[position], Toast.LENGTH_LONG).show();
          
          
          str_id = db_string[position].trim();
          
       //******************
       initView();
       //******************
          
       //Toast.makeText(Fr_02_view_s1.this,"您选择了" + str_to, Toast.LENGTH_LONG).show();
       
          /////////---s1---/////////
          //Intent intent = new Intent(Fr_02_view_s1.this,Fr_05_view_s2.class);
             //Bundle bundle = new Bundle(); //通过Bundle实现数据的传递:
             //bundle.putString("key_view_s2", str_to);
             //intent.putExtras(bundle);
             //startActivity(intent);  
             /////////------/////////
          
          
         } 
     }); 
  ///////////////////

}
 
 
 
//////////////ws////////////////
//////////////ws////////////////
//////////////ws////////////////
private void initView()
{
String phone = str_id;
getRemoteInfo(str_id);
}

//
public void getRemoteInfo(final String phone) { 
new Thread(new Runnable() { 
   
  @Override 
  public void run() { 
      // TODO Auto-generated method stub 
      // 命名空间 
      String nameSpace = "http://tempuri.org/"; 
      // 调用方法的名称 
      //String methodName = "selectAllCargoInfor"; 
      String methodName = "Return_R_detail";
      // EndPoint 
      String endPoint = "http://192.168.1.91:8028/an_sql_test1.asmx"; 
      // SOAP Action 
      // String soapAction = "http://192.168.1.91:8028/an_sql_test1.asmx/selectAllCargoInfor"; 
      String soapAction = "http://192.168.1.91:8028/an_sql_test1.asmx/Return_R_detail";
      // 指定WebService的命名空间和调用方法 
      SoapObject soapObject = new SoapObject(nameSpace, methodName); 
      // 设置需要调用WebService接口的两个参数mobileCode UserId 
      //soapObject.addProperty("Ts_01", ""); 
      soapObject.addProperty("str_Work_ID", str_id);
     
      // 生成调用WebService方法调用的soap信息,并且指定Soap版本 
      SoapSerializationEnvelope envelope = new SoapSerializationEnvelope( 
              SoapEnvelope.VER12); 
      envelope.bodyOut = soapObject; 
      // 是否调用DotNet开发的WebService 
      envelope.dotNet = true; 
      envelope.setOutputSoapObject(soapObject); 
      HttpTransportSE transport = new HttpTransportSE(endPoint); 
      try { 
          transport.call(soapAction, envelope); 
      } catch (IOException e) {
      //} catch (Exception e) {
          // TODO Auto-generated catch block 
          e.printStackTrace(); 
      }
     
      catch (XmlPullParserException e) { 
          // TODO Auto-generated catch block 
          e.printStackTrace(); 
      }

// 获取返回的数据 
      SoapObject object = (SoapObject) envelope.bodyIn; 
      // 获取返回的结果

String result = object.getProperty(0).toString(); 
      Message message = handler.obtainMessage(); 
      message.obj = result; 
      handler.sendMessage(message);
     
      /////////
  } 
}).start(); 
}

private Handler handler = new Handler(){ 
public void handleMessage(android.os.Message msg) { 
  // 将WebService得到的结果返回给TextView
  //tv_result.setText(msg.obj.toString()); 
 
 String str_1, str_2;
 str_1 = msg.obj.toString();
 str_2 = str_1.replace("anyType{","");
 str_1 = str_2.replace("}","");
 str_2 = str_1.replace("string=","");
 //str_1 = str_2.replace(";","\r\n");
 str_1 = str_2.replace(";",",");
 //tv_result.setText(str_1);
    str_to = str_1;
   
 /////////---s1---/////////
 Intent intent = new Intent(Fr_02_view_s1.this,Fr_05_view_s2.class);
    Bundle bundle = new Bundle(); //通过Bundle实现数据的传递:
    bundle.putString("key_view_s2", str_to);
    intent.putExtras(bundle);
    startActivity(intent);  
    /////////------/////////
 
}; 
};

//////////////ws////////////////
//////////////ws////////////////
//////////////ws////////////////

@Override
 public boolean onCreateOptionsMenu(Menu menu) {
  // Inflate the menu; this adds items to the action bar if it is present.
  getMenuInflater().inflate(R.menu.fr_02_view_s1, menu);
  return true;
 }

@Override
 public boolean onOptionsItemSelected(MenuItem item) {
  // Handle action bar item clicks here. The action bar will
  // automatically handle clicks on the Home/Up button, so long
  // as you specify a parent activity in AndroidManifest.xml.
  int id = item.getItemId();
  if (id == R.id.action_settings) {
   return true;
  }
  return super.onOptionsItemSelected(item);
 }

}

************************************************************************
************************************************************************
详细信息

package com.example.ht;

import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;

//////////////////////////
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

import android.app.ListActivity;
import android.content.Intent;
//import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;

import java.util.List; 
//////////////////////////

//public class Fr_05_view_s2 extends ActionBarActivity {
public class Fr_05_view_s2 extends ListActivity {
   
  // TitleList -------------
     //////////////////////////
  private String[] t1 = { "ID", "工号", "姓名", "部门", "工作内容"}; 
  private String[] t2 = null; 
  private String[] mListTitle = null; 
  private String[] mListStr = null; 
  //private int int_close = 0;
 
  private String str_1;
 
     ListView mListView = null; 
     ArrayList<Map<String,Object>> mData= new ArrayList<Map<String,Object>>();; 
  //////////////////////////   
 
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  //super.onCreate(savedInstanceState);
  //setContentView(R.layout.activity_fr_05_view_s2);
  
        /////////------/////////
  Bundle bunde = this.getIntent().getExtras();
  str_1 = bunde.getString("key_view_s2").toString();
  t2 =str_1.split(",");
        /////////------/////////
  
        //////////////////////////
  //int_close = mListTitle.length + 1;
  //mListTitle[int_close] = "订单编号";
  //mListStr[int_close] = "退出";
  //String[] name = new mListTitle[int_close];

mListTitle = insert(t1, "返回");
  mListStr = insert(t2, "返回");
        //////////////////////////

mListView = getListView();
      
  int lengh = mListTitle.length;
  for(int i =0; i < lengh; i++) {
      Map<String,Object> item = new HashMap<String,Object>();
      item.put("title", mListTitle[i]);
      item.put("text", mListStr[i]);
      mData.add(item);
  }
  
  SimpleAdapter adapter = new SimpleAdapter(this,mData,android.R.layout.simple_list_item_2,
   new String[]{"title","text"},new int[]{android.R.id.text1,android.R.id.text2});
         setListAdapter(adapter);
        
         mListView.setOnItemClickListener(new OnItemClickListener() {
          @Override
          public void onItemClick(AdapterView<?> adapterView, View view, int position,
           long id) {
          
          if (mListTitle[position] ==  "返回")
          {
              //Intent intent = new Intent(Fr_05_view_s2.this, F9_GridView.class);
              //startActivity(intent);
           finish();
          }
          else
          {
            Toast.makeText(Fr_05_view_s2.this,"您选择了标题 :" + mListTitle[position] + ",  "
              + "  信息 :"+mListStr[position], Toast.LENGTH_LONG).show();
          }
       
          }
      });
        
         super.onCreate(savedInstanceState);
 }
 
    //////////////string[]添加元素函数/////////////////
 private static String[] insert(String[] arr, String str)
    {
        int size = arr.length;
       
        String[] tmp = new String[size + 1];
       
        System.arraycopy(arr, 0, tmp, 0, size);
       
        tmp[size] = str;
       
        return tmp;
    }
    ////////////////////////////////

@Override
 public boolean onCreateOptionsMenu(Menu menu) {
  // Inflate the menu; this adds items to the action bar if it is present.
  getMenuInflater().inflate(R.menu.fr_05_view_s2, menu);
  return true;
 }

@Override
 public boolean onOptionsItemSelected(MenuItem item) {
  // Handle action bar item clicks here. The action bar will
  // automatically handle clicks on the Home/Up button, so long
  // as you specify a parent activity in AndroidManifest.xml.
  int id = item.getItemId();
  if (id == R.id.action_settings) {
   return true;
  }
  return super.onOptionsItemSelected(item);
 }
 
 
}

************************************************************************

时间: 2024-11-05 17:20:33

20150626_Andriod_02_ListView2_列表与详细信息的相关文章

利用Zabbix API 获取各个分组下的服务器列表以及详细信息

现在越来越多的公司选择使用开源软件Zabbix来做服务器业务监控,其高逼格的用户管理是个亮点,所以可以通过调用它的接口将权限管理应用到很多地方,比如说堡垒机权限.以下是用python简单写了个小脚本,通过定义分组名便可以得到分组下的服务器信息. #coding=utf-8 __author__ = 'Perling' from urllib import urlencode import urllib2 import json def post(post_data):     api_url =

GraphQL漏洞案例:获取任何Facebook用户的朋友列表和部分支付卡详细信息

Facebook有一个GraphQL endpoint,只能由Facebook的某些应用程序使用.需要用户(或页面)access_token来查询GraphQL endpoint. 这里可以将Facebook用在Android应用程序的客户端令牌去尝试查询请求,endpoint返回的错误消息如下: graph.facebook.com/graphql?access_token=350685531728|62f8ce9f74b12f84c123cc23437a4a32&q=me(){id} Res

C#开发微信门户及应用(4)--关注用户列表及详细信息管理

在上个月的对C#开发微信门户及应用做了介绍,写过了几篇的随笔进行分享,由于时间关系,间隔了一段时间没有继续写这个系列的博客了,并不是对这个方面停止了研究,而是继续深入探索这方面的技术,为了更好的应用起来,专心做好底层的技术开发. 微信的很重要的一个特点就是能够利用其平台庞大的用户群体,因此很容易整合在CRM(客户关系管理)系统里面,服务号和订阅好都能够向关注者推送相关的产品消息,还能和48小时内响应消息和事件的活跃用户进行交互对话,因此用户信息是微信API里面非常重要的一环,本随笔主要介绍获取关

VCF文件详细信息

Variant Call Format(VCF)是一个用于存储基因序列突变信息的文本格式.表示单碱基突变, 插入/缺失, 拷贝数变异和结构变异等.BCF格式文件是VCF格式的二进制文件. CHROM [chromosome]: 染色体名称. POS [position]: 参考基因组突变碱基位置,如果是INDEL(插入缺失),位置是INDEL的第一个碱基位置. ID [identifier]: 突变的名称.若没有,则用'.'表示其为一个新变种. REF [reference base(s)]:

Ext属性详细信息

Ext.window属性详细信息 Ext.Window扩展自Ext.Panel,其xtype值为window. 1.主要配置项 closable:是否允许关闭窗口,默认为true.       closeAction:关闭窗口的动作,包括以下两种:        close:从DOM删除窗口,销毁窗口及其所属组件,窗口不再可用,重新显示需要调   用show方法.此为默认值.        hide:通过设置可见性隐藏窗口,窗口还可用,调用show方法后重新显示.       constrain

Asp.Net MVC4入门指南(9):查询详细信息和删除记录

在本教程中,您将查看自动生成的Details和Delete方法. 查询详细信息和删除记录 打开Movie控制器并查看Details方法. public ActionResult Details(int id = 0) { Movie movie = db.Movies.Find(id); if (movie == null) { return HttpNotFound(); } return View(movie); } Code First 使得您可以轻松的使用Find方法来搜索数据.一个重要

【Android Developers Training】 99. 获取联系人详细信息

注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer.android.com/training/contacts-provider/retrieve-details.html 这节课将会展示如何获取一个联系人的详细数据,比如电子邮件地址,电话号码,等等.当用户获得一个联系人后,他会想要查看他的详细信息.你可以展示给他们所有的信息,或者只展示某一特定类

利用Scrapy爬取所有知乎用户详细信息并存至MongoDB

欢迎大家关注腾讯云技术社区-博客园官方主页,我们将持续在博客园为大家推荐技术精品文章哦~ 作者 :崔庆才 本节分享一下爬取知乎用户所有用户信息的 Scrapy 爬虫实战. 本节目标 本节要实现的内容有: 从一个大V用户开始,通过递归抓取粉丝列表和关注列表,实现知乎所有用户的详细信息的抓取. 将抓取到的结果存储到 MongoDB,并进行去重操作. 思路分析 我们都知道每个人都有关注列表和粉丝列表,尤其对于大V来说,粉丝和关注尤其更多. 如果我们从一个大V开始,首先可以获取他的个人信息,然后我们获取

爬取京东上商品的所有详细信息

项目介绍 使用python抓取京东商城商品(以手机为例)的详细信息,并将相应的图片下载下载保存到本地. 爬取步骤 1.选取种子URL:http://list.jd.com/list.html?cat=9987,653,655 2.使用urllib和urllib2下载网页 3.使用BeautifulSoup和re正则表达式解析html 4.保存数据 工具 python2.7 演示效果: 下载的图片: 下载示例: 名称: 摩托罗拉 Moto Z(XT1650-05) 模块化手机 流金黑 移动联通电信