实现在淘宝自动搜索商品的关键就是获取下一页商品的URL地址。下面分析一下两种不同搜索方式下商品URL地址的特点。
第一种方式是自己在搜索栏中输入要搜索的商品,如下图所示。
依次获取连续6页的URL
第1页
q=%E7%BE%BD%E6%AF%9B%E7%90%83&js=1&style=grid&stats_click=search_radio_all%3A1&initiative_id=staobaoz_20170301&ie=utf8"
第2页q=%E7%BE%BD%E6%AF%9B%E7%90%83&js=1&style=grid&stats_click=search_radio_all%3A1&initiative_id=staobaoz_20170301&ie=utf8&bcoffset=0&ntoffset=0&p4ppushleft=1%2C48&s=44"
第3页
"?q=%E7%BE%BD%E6%AF%9B%E7%90%83&js=1&style=grid&stats_click=search_radio_all%3A1&initiative_id=staobaoz_20170301&ie=utf8&bcoffset=-3&ntoffset=-3&p4ppushleft=1%2C48&s=88"
第4页
"?q=%E7%BE%BD%E6%AF%9B%E7%90%83&js=1&style=grid&stats_click=search_radio_all%3A1&initiative_id=staobaoz_20170301&ie=utf8&bcoffset=-6&ntoffset=-6&p4ppushleft=1%2C48&s=132"
第5页
"?q=%E7%BE%BD%E6%AF%9B%E7%90%83&js=1&style=grid&stats_click=search_radio_all%3A1&initiative_id=staobaoz_20170301&ie=utf8&bcoffset=-9&ntoffset=-9&p4ppushleft=1%2C48&s=176"
第6页
"?q=%E7%BE%BD%E6%AF%9B%E7%90%83&js=1&style=grid&stats_click=search_radio_all%3A1&initiative_id=staobaoz_20170301&ie=utf8&bcoffset=-12&ntoffset=-12&p4ppushleft=1%2C48&s=220"
第二种方式是通过淘宝的推荐搜索商品

点击搜索框下面的衬衫,依次获取连续6页的URL
第1页
"?q=%E8%A1%AC%E8%A1%AB&refpid=430275_1006&source=tbsy&style=grid&tab=all&pvid=d9eedc1c5512c8b022d9da83755d0894&clk1=e9e6df54df8dcbdf3526c10092be4238&spm=a21bo.50862.201856-sline.10.qzPfqS"
第2页
"?q=%E8%A1%AC%E8%A1%AB&refpid=430275_1006&source=tbsy&style=grid&tab=all&pvid=d9eedc1c5512c8b022d9da83755d0894&clk1=e9e6df54df8dcbdf3526c10092be4238&spm=a21bo.50862.201856-sline.10.qzPfqS&bcoffset=-3&p4ppushleft=3%2C44&s=44&ntoffset=-3"
第3页
"?q=%E8%A1%AC%E8%A1%AB&refpid=430275_1006&source=tbsy&style=grid&tab=all&pvid=d9eedc1c5512c8b022d9da83755d0894&clk1=e9e6df54df8dcbdf3526c10092be4238&spm=a21bo.50862.201856-sline.10.qzPfqS&bcoffset=-3&p4ppushleft=3%2C44&s=88&ntoffset=-3"
第4页
"?q=%E8%A1%AC%E8%A1%AB&refpid=430275_1006&source=tbsy&style=grid&tab=all&pvid=d9eedc1c5512c8b022d9da83755d0894&clk1=e9e6df54df8dcbdf3526c10092be4238&spm=a21bo.50862.201856-sline.10.qzPfqS&bcoffset=-3&p4ppushleft=3%2C44&s=132&ntoffset=-3"
第5页
"?q=%E8%A1%AC%E8%A1%AB&refpid=430275_1006&source=tbsy&style=grid&tab=all&pvid=d9eedc1c5512c8b022d9da83755d0894&clk1=e9e6df54df8dcbdf3526c10092be4238&spm=a21bo.50862.201856-sline.10.qzPfqS&bcoffset=-3&p4ppushleft=3%2C44&s=176&ntoffset=-3"
第6页
"?q=%E8%A1%AC%E8%A1%AB&refpid=430275_1006&source=tbsy&style=grid&tab=all&pvid=d9eedc1c5512c8b022d9da83755d0894&clk1=e9e6df54df8dcbdf3526c10092be4238&spm=a21bo.50862.201856-sline.10.qzPfqS&bcoffset=-3&p4ppushleft=3%2C44&s=220&ntoffset=-3"
通过上面的分析可以看出对于不同的搜索方式,url的构成是不同的。例如第一种搜索方式中url包含js,style,stats_click,initiative_id,ie等参数。而第二种搜索方式包括refpid,source,tab,pvid,clk1,spm等参数。当然它们之间也有相同的部分例如bcoffset,ntoffset,ppushleft,s等参数。给定一种确定的搜索方式,不同页面的url中,bcoffset,ntoffset和s参数也是不同,但是它们之间存在着某种规律,比如s值依次增加44,bcoffset依次递减3或者不变,ntoffset和bcoffset的值相等。由于url中多个参数变化,那么能否仅根据一个参数就能实现不同页面的url地址之间的切换呢?答案是肯定的,那就是可以更改url中的s的值,注意s的取值只能是44的倍数。
有一点需要注意的是无论采用哪一种搜索方式搜索结果第一页的url中均没有s参数,那么怎么样才能让第一页中也出现s参数呢。具体方法就是在第一页点击下一页按钮,然后再点击上一页按钮,返回到第一页,你就会发现url中出现s参数了。
以上就是url地址的构成规律,具体程序可以访问https://github.com/sgtcheer/item-search/blob/master/auto-search-item.js
利用上述方法实现的谷歌浏览器插件可以访问 https://github.com/sgtcheer/chrome