闲鱼爬虫源码淘宝闲鱼商品爬虫源码,可以爬取闲鱼商品的商品内容,图片,价格,出售人信息等等
运行本程序之后可以抓取手机闲鱼App中的商品数据,可以随意按照自定义的关键词抓取自己想要的商品数据。包含商品的详细信息,抓取入库了。可自行筛选符合自己要求的商品数据,方便快捷精准买到性价比高的二手商品。
爬到的数据样例:
[
{
"title":"大疆Mavic Air2畅飞套装,带换新,截止日期6月3号, 机器去年6月多购买,如图所示,所有配件全在,盒子扔了,有收纳包,自己又单独买了图二配件,包括增高架,抛投器,平板支架,机器完美无划痕,可以看我录的视频,遥控器也是完 美无划痕,电池循环次数如图所示,不议价不议价不议价,这个价格懂得都懂,所有信...",
"area":"北京",
"itemId":"642422473526",
"picUrl":"http://img.alicdn.com/bao/uploaded/i4/O1CN011bIER51lP1kbfmtQ2_!!0-fleamarket.jpg",
"oriPrice":"",
"tagname":"极好/2人想要",
"soldPrice":"5280",
"userNick":"绣巷属新鲜的木瓜",
"itemType":"detailCommonBuy"
},
{
"title":"大疆御air1,全新机身加一块全新电池,个人闲置,昨天换新, 外加3块正常工作电池,一共4块电池,电池管家一套,机翼 叶片副厂两套,原厂两套,保护罩一套未拍上。现低价出售,功能一切正常,全新机器。不刀不刀,看到即是实价,讲价者勿扰。买到就是赚到。售出无质量问题不退不换。运费到付,当天确认收货退回运费。",
"area":"山东",
"itemId":"643106979306",
"picUrl":"http://img.alicdn.com/bao/uploaded/i4/O1CN01OV1xCv1R3EaZkzWXJ_!!0-fleamarket.jpg",
"oriPrice":"",
"tagname":"极好/7人想要",
"soldPrice":"3560",
"userNick":"RuiSeptember",
"itemType":"detailCommonBuy"
}
]
数据简单应用效果:做成自己的网页,按自己的条件重新搜索数据。标注描述中的关键字,按价格最低排序,很容易就能找到自己想要的商品。直接从网页上点击跳转到闲鱼App打开详情页
测试地址:http://stock.changu.net/xianyu/vue




源码介绍地址:http://changu.net/xianyu.html
核心hook代码
闲鱼商品搜索接口:
{"apiName":"mtop.taobao.idle.search.glue","apiVersion":"8.0","needJsonReq":false,"needLogin":false,"needWua":false}
请求参数:
{
"activeSearch":false,
"bizFrom":"home",
"forceUseInputKeyword":false,
"forceUseTppRepair":false,
"fromFilter":false,
"fromKits":false,
"fromLeaf":false,
"fromShade":false,
"fromSuggest":false,
"gps":"39.925586,116.194936",
"keyword":"你的搜索关键词",
"latitude":"39.925586",
"longitude":"116.194936",
"pageNumber":1,
"resultListLastIndex":0,
"rowsPerPage":10,
"searchReqFromActivatePagePart":"searchButton",
"searchReqFromPage":"xyHome",
"searchTabType":"SEARCH_TAB_MAIN",
"searchType":"common",
"shadeBucketNum":1,
"suggestBucketNum":-1
}
返回结果
{
"data":{
"item":{
"main":{
"clickParam":{
"arg1":"Item",
"args":{
"biz_type":"item",
"bucketid":"21",
"cCatId":"126856567",
"card_type":"idlefish_search_card_item_waterfall",
"catId":"50023914",
"id":"642417625236",
"index":"2",
"item_id":"642417625236",
"item_type":"goods",
"labelBucketId":"3",
"page":"7",
"pageSize":"10",
"position":"78",
"q":"%E5%A4%A7%E7%96%86air2",
"rn":"b9422f7d85c2674cfca17c4bbe82b2ad",
"search_from_page":"xyHome",
"search_id":"6235ddeb301fb829c4d99c1e028d88b0",
"spm":"a2170.8011571.1.78",
"tag":"wantnum-9",
"tagname":"9人想要",
"tbCatId":"125166009",
"type":"1",
"unShowLabelParams":"{"36":"轻微使用痕迹","38":"DJI/大疆","41":"¥7407"}",
"wantNum":"9"
},
"bizType":"item",
"page":"Page_xySearchResult"
},
"exContent":{
"area":"浙江",
"detailParams":{
"isVideo":"false",
"itemId":"642417625236",
"itemType":"detailCommonBuy",
"picHeight":"1920",
"picWidth":"1080",
"soldPrice":"5300",
"title":"2月份购买的大疆御air2无人机随心换加畅飞套装。九成新,三 块电池均循环二十次左右。地点在浙江义乌,有同城者线下见面交易。",
"userNick":"宁小城踢足球",
"want":"9人想要"
},
"isAliMaMaAD":"false",
"isAuction":"false",
"itemId":"642417625236",
"oriPrice":"¥7407",
"picHeight":"218.66666666666666",
"picUrl":"http://img.alicdn.com/bao/uploaded/i3/O1CN01gdnVB41n2FHTKtspd_!!0-fleamarket.jpg",
"picWidth":"164.0",
"placeholderColor":"#F7F7F7",
"price":[
{
"bold":"true",
"marginBottom":"4",
"text":"¥",
"textColor":"#ff4444",
"textSize":"12.0"
},
{
"bold":"true",
"marginBottom":"2",
"text":"5300",
"textColor":"#ff4444",
"textSize":"18.0"
}
],
"priceTag":[
{
"data":{
"fontWeight":"w400",
"lineHeight":"1.6",
"text":"9人想要",
"textColor":"#FFA3A3A3",
"textSize":"10.0"
},
"type":"Text"
}
],
"richTitle":[
{
"data":{
"fontWeight":"w700",
"lineHeight":"1.3571428571428572",
"text":"2月份购买的大疆御air2无人机随心换 加畅飞套装。九成新,三 块电池均循环二十次左右。地点在浙江义乌,有同城者线下见面交易。",
"textColor":"#FF333333",
"textSize":"14.0"
},
"type":"Text"
}
],
"showVideoIcon":"false",
"stuffStatusTagHeight":"0.0",
"stuffStatusTagWidth":"0.0",
"title":"2月份购买的大疆御air2无人机随心换加畅飞套装。九成新,三 块电池均循环二十次左右。地点在浙江义乌,有同城者线下见面交易。",
"userActiveUrl":"https://gw.alicdn.com/tfs/TB1zIymVUz1gK0jSZLeXXb9kVXa-30-30.png",
"userAvatarUrl":"http://img.alicdn.com/sns_logo/i1/O1CN01UZiot91n2FHGxgaOU_!!0-fleamarket.jpg",
"want":"9人想要"
},
"targetUrl":"fleamarket://awesome_detail?id=642417625236&flutter=true&referPageArgs=%E5%A4%A7%E7%96%86air2&referPage=Page_xySearchResult&trackParamsJson=%7B%22q%22%3A%22%25E5%25A4%25A7%25E7%2596%2586air2%22%2C%22page_number%22%3A%227%22%2C%22item_id%22%3A%22642417625236%22%2C%22item_type%22%3A%22goods%22%2C%22index%22%3A%222%22%2C%22id%22%3A%22642417625236%22%2C%22rn%22%3A%22b9422f7d85c2674cfca17c4bbe82b2ad%22%2C%22search_from_page%22%3A%22xyHome%22%2C%22search_id%22%3A%226235ddeb301fb829c4d99c1e028d88b0%22%7D"
}
},
"template":{
"name":"idlefish_search_card_item_waterfall",
"url":"https://ossgw.alicdn.com/rapid-oss-bucket/1615185324004/idlefish_search_card_item_waterfall.zip",
"version":"6"
}
},
"style":"flow",
"type":"DX"
}
闲鱼商品详情页:
详情页请求参数:
{"gps":"39.925575,116.194931","itemId":"626382089218","latitude":"39.925575","longitude":"116.194931","needSimpleDetail":false},[request]:{"apiName":"mtop.taobao.idle.awesome.detail","apiVersioin":"1.0","gps":"39.925575,116.194931","mParam":{"gps":"39.925575,116.194931","itemId":"626382089218","latitude":"39.925575","longitude":"116.194931","needSimpleDetail":false},"mRequestConfig":{"apiName":"mtop.taobao.idle.awesome.detail","apiVersion":"1.0","needJsonReq":false,"needLogin":false,"needWua":false},"originJson":false,"param":{"gps":"39.925575,116.194931","itemId":"626382089218","latitude":"39.925575","longitude":"116.194931","needSimpleDetail":false},"requestConfig":{"apiName":"mtop.taobao.idle.awesome.detail","apiVersion":"1.0","needJsonReq":false,"needLogin":false,"needWua":false},"secondRefresh":false,"startTime":1618059082660}'}
package com.taobao.idlefish.protocol.net;
import com.taobao.idlefish.protocol.Protocol;
import com.taobao.idlefish.protocol.net.api.BaseApiProtocol;
public interface PApiContext extends Protocol {
long getDate();
void logout();
<T, A extends ResponseParameter> void send(BaseApiProtocol<T, A> baseApiProtocol, ApiCallBack<A> apiCallBack);
}
--------------------------------------------------------------------------------
public void ss() {
Log.c("detail", "jinyi.cyp80", "begin recommendForPreload....");
if (this.mItemDetailDO == null || ((this.eN != null && this.eN.size() > 0) || !this.mItemDetailDO.needRecommand)) {
Log.c("detail", "jinyi.cyp80", "return recommendForPreload....");
return;
}
((PApiContext) XModuleCenter.moduleForProtocol(PApiContext.class)).send(new ApiProtocol().apiNameAndVersion("mtop.taobao.idle.item.recommend.list", "2.0").paramMap(JSON.parseObject(JSON.toJSONString(a(this.mItemDetailDO)))), new ApiCallBack<ResponseParameter>() {
/* class com.taobao.fleamarket.detail.model.ItemDetailModel.AnonymousClass3 */
@Override // com.taobao.idlefish.protocol.net.ApiCallBack
public void onSuccess(ResponseParameter responseParameter) {
if (responseParameter.getData() != null) {
JSONArray cardList = ((JSONObject) responseParameter.getData()).getJSONArray("cardList");
if ((responseParameter.getData() instanceof JSONObject) && cardList != null) {
ResponseParameter unused = ItemDetailModel.this.a = responseParameter;
Log.c("detail", "jinyi.cyp80", "get prelaodData!!");
}
}
}
@Override // com.taobao.idlefish.protocol.net.ApiCallBack
public void onFailed(String code, String msg) {
Log.c("detail", "jinyi.cyp80", "failed prelaodData!!");
}
});
}