Re: [问题] 莱尔富门市爬虫 踢到铁板

楼主: TakiDog (多奇狗)   2020-05-10 00:07:28
※ 引述《somehog (低进)》之铭言:
: 各位大大好,遇到一个铁板,
: 可能跟程式语言比较没关系,
: 专案需要定期抓莱尔富的全部所有门市,
: 找到其官网门市查询所在位置,
: https://www.hilife.com.tw/storeInquiry_street.aspx
: 大约看一下网页原码,
: 应该是ASP.Net & WebForm无误,
: GET跟POST都是这一支,
: 所以逻辑思路如下:
: 方法1:
: 先用GET不带参数发出Request,
: 取得回传网页后,剖析取出
: __VIEWSTATEGENERATOR
: __EVENTVALIDATION
: __VIEWSTATE
: __EVENTTARGET
: __EVENTARGUMENT
: __LASTFOCUS
: 等等数值,
: 然后塞入POST内,
: 再填入自订的县市CITY与乡区AREA后,
: 发出Request,
: 台北市全区没问题,
: 都可以取得门市资料,
: 但诡异的是:
: 其他县市与乡区却直接拒绝连结.....!!??
: 试用方法2
: 先用GET取得__VIEWSTATE值之后,
: 再发出台北市中山区的POST,
: 得到正常回传结果后再取一次全部__VIEWSTATE值,
: 然后再塞入,填上新北市林口区再发出POST,
: .....一样失败,拒绝连结!
: 试用方法3
: 把GET取得__VIEWSTATE值,
: 手工写入静态HTML网页内的FORM input内,
: 指定云林县虎尾镇
: 然后按submit post出去,
: .........成功正常回传
: 感觉有点崩溃,没头绪....
: 猜想因为台北市是default页,
: 所以没有设检查,
: 不了解ASP.Net的后端作法,
: 有大大可以提供解法建议吗?
: 感恩~
我很讨厌这种架构
你在网页上的每个动作都要丢一个req,如果你要做2个动作
就要丢2个
如果做很多....
我们如果要跳到基隆市的话
我们不知道基隆有什么区,第一个封包只能做更动县市的动作
我们的地区要使用台北的地区
第二个封包才能到基隆后才能选择基隆的地区
附上gist 写比较赶XD
https://gist.github.com/takidog/447e2231691617cbb14b3a515f63ff1e
小弟只是喜欢爬虫,很菜 code很臭 不要电我XDD
作者: aidansky0989 (alta)   2020-05-10 09:01:00
推晚点研究一下
作者: boboye (me)   2020-05-11 18:32:00
推一个
作者: nini200 (200妮妮)   2020-05-14 00:15:00

Links booklink

Contact Us: admin [ a t ] ucptt.com