美文网首页
爬虫数据采集Post数据中不一样的分页处理

爬虫数据采集Post数据中不一样的分页处理

作者: 八维数据 | 来源:发表于2019-10-15 21:36 被阅读0次

    今天遇到一个瀑布流式的网站,凭个人经验,遇到这样的网站,第一步就是抓包分析加载数据。

    例子:https://stores.padi.com.cn/?_ga=2.187424673.825376965.1570783167-1912838037.1564103148&tdsourcetag=s_pcqq_aiomsg

    如图:

    瀑布流网站

      凡是遇到往下滚动,或者点动 加载更多 才能加载更新内容的,基本上都是要抓包分析出这个网站post信息。

      之前我已经做过抓包分析数据的方法了,这里就不累述了,简单说一下,就是任何浏览器中,按F12抓包处理。

    我们抓包到这个网站的网址是 :https://stores.padi.com.cn:4001/

    post值是:{"operationName":"searchStores","variables":{"first":20,"searchTerm":"","levels":["ALL"],"regions":[],"isEFR":false,"isFreeDive":false,"after":"cjfjdrl3z00h20787fp440g3n"},"query":"query searchStores($first: Int!, $after: String, $searchTerm: String, $levels: [LEVELS_FILTER], $regions: [String], $latitude: Float, $longitude: Float) {\n stores(first: $first, after: $after, searchTerm: $searchTerm, levels: $levels, regions: $regions, latitude: $latitude, longitude: $longitude) {\n edges {\n node {\n id\n nameEN\n nameSC\n number\n address\n addressSC\n telCityCode\n telNumber\n mobile\n email\n url\n lat\n lng\n level\n region\n isFreeDive\n isEFR\n logo\n photo\n wechatLink\n display\n __typename\n }\n __typename\n }\n pageInfo {\n endCursor\n hasNextPage\n __typename\n }\n __typename\n }\n}\n"}

    凭个人多年的经验,这个post 值中不一样的数据有 "first":20,和 "after":"cjfjdrl3z00h20787fp440g3n"。

    其他多是无关紧要的数据,大家可以多抓几个包,进行比对就知道了。

    那这个 "first":20,是什么那,我们看到抓包出来的数据就是 有20条数据,那说明这个是一个固定的值 ,每一次加载,都是按20条进行展示的,到这里,其实我们还可以增加一些测试,就是把这个20改100,会发生什么哪?其实就是一次加载变成了100个,那就能把按20条加载变成了100条,采集的速度肯定也会翻倍了。

    接下来 "after":"cjfjdrl3z00h20787fp440g3n" 这个是什么那,after 英文是后的意思,说明这个是一个分页的特别处理,平时我们习惯分页用page=1,数字来处理,这个post里的分页用的是一个代码,那怎么办那,我们不要担心,慢慢分析。我们在抓包一次看一下数据。

    post数据2 :{"operationName":"searchStores","variables":{"first":20,"searchTerm":"","levels":["ALL"],"regions":[],"isEFR":false,"isFreeDive":false,"after":"cjfjdtlaq00lw0787xkr8zepk"},"query":"query searchStores($first: Int!, $after: String, $searchTerm: String, $levels: [LEVELS_FILTER], $regions: [String], $latitude: Float, $longitude: Float) {\n stores(first: $first, after: $after, searchTerm: $searchTerm, levels: $levels, regions: $regions, latitude: $latitude, longitude: $longitude) {\n edges {\n node {\n id\n nameEN\n nameSC\n number\n address\n addressSC\n telCityCode\n telNumber\n mobile\n email\n url\n lat\n lng\n level\n region\n isFreeDive\n isEFR\n logo\n photo\n wechatLink\n display\n __typename\n }\n __typename\n }\n pageInfo {\n endCursor\n hasNextPage\n __typename\n }\n __typename\n }\n}\n"}

    这里的after又变了,按常规理论来说,post数据里的信息基本都是从上一个分页信息中提取的,不可能会随便添加修改出来的,这个是一个基本理论,那我们看一下,上一次的分页获取的内容是什么样的?

    上一次分页加载的内容

    从截图来看,edges这个数据下面是0-19个数据,也就是证明了"first":20,这个数据的作用了,那endCursor后面的数据是不是我们抓包第二次中,post值里的 "after":"cjfjdtlaq00lw0787xkr8zepk"}。

    到这里基本上就明白了 post值中的after这个分页数据的原理了。

    好了,今天就讲到这里,有需要更进一步学习采集post技巧的,可以加我 QQ:315 98720  ,进行交流培训。

    相关文章

      网友评论

          本文标题:爬虫数据采集Post数据中不一样的分页处理

          本文链接:https://www.haomeiwen.com/subject/znjemctx.html