问题描述
- 求助jsoup如何翻页取值问题
- 请问在这个代码上面如何添加取后面几页的功能...这个只能取第一页的...
import java.io.IOException;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import org.jsoup.Jsoup;import org.jsoup.nodes.Document;import org.jsoup.nodes.Element;import org.jsoup.select.Elements;public class Product { public List<Map<String String>> getProductInfo(String url) throws IOException { Document doc = Jsoup.connect(url).get(); Elements ele = doc.select(""td[id]""); // System.out.println(ele.toString()); List<Map<String String>> data = new ArrayList<Map<String String>>(); for (int i = 1; i < 21; i++) { // list添加数据 data.add(getFoodInfo(i ele)); } return data; } private Map<String String> getFoodInfo(int k Elements ele) { Map<String String> info = new HashMap<String String>(); for (int i = 0; i < 4; i++) { // map添加数据 int j = 0; for (Element m : ele) { String value = m.attr(""id""); if (value.equals(""ctl00_cphMainFrame_td"" + k + ""SecondType"")) { info.put(""分类"" m.text()); } else if (value.equals(""ctl00_cphMainFrame_td"" + k + ""TypeName"")) { info.put(""名称"" m.text()); } else if (value.equals(""ctl00_cphMainFrame_td"" + k + ""GoodsTypeName"")) { // System.out.println(m.text()); if (j == 0) { info.put(""品牌"" m.text()); } else if (i == 01) { info.put(""单位"" m.text()); } j++; } if (value.equals(""ctl00_cphMainFrame_td"" + k + ""AvevageValue"")) { info.put(""平均价格"" m.text()); } } } return info; }}
测试内容
import java.io.IOException;import java.util.List;import java.util.Map;public class Test { public static void main(String[] args) throws IOException { String url = ""http://www.lnprice.gov.cn/wjjc/jgjc/ReportByDateOfPivot.aspx?PriceBureauMainType_Id=101&YM=201502&DP=28""; Product pro = new Product(); List<Map<String String>> list = pro.getProductInfo(url); for (int i = 0; i < list.size(); i++) { Map<String String> map = list.get(i); System.out.println("">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>""); System.out.println(""<<< "" + i); System.out.println(""分类: "" + map.get(""分类"")); System.out.println(""名称: "" + map.get(""名称"")); System.out.println(""品牌: "" + map.get(""品牌"")); System.out.println(""单位: "" + map.get(""单位"")); System.out.println(""平均价格: "" + map.get(""平均价格"")); System.out.println(""************************************""); } }}
解决方案
没看出有分页的代码,传递的值也没有每页多少条,第几页的信息。
解决方案二:
所以想求如何添加取全部的分页内容代码怎么写...
解决方案三:
处理URL就行,给出第一个url,拿到一个页面的信息当然也可以拿到页面的url,重复抓取
时间: 2024-08-30 20:11:05