目标地址 http://www.gzjt.gov.cn/gzjt/tcc/list_tt.shtml
上面url是广州交通的地址。朋友想要我帮忙去抓到所有的广州停车场所在的详细地址。
一开始去查这个网页的时候,感觉还是很迷惑的。因为是动态网页,所以我得先捕捉漏洞。然后,通过漏洞去抓到对应的数据有关的地址。
经过大概十几分钟,比较幸运,找到了对应的漏洞。(个人猜测,可能是因为是政府网站,所以,防护的效果虽然也是有,但是并不那么高深。)
然后,我查了下,总共只有318页的数据,也就没有做多协程,就直接开了单线程,然后直接一路开过去就好了~
用时大概就30秒?,也还是能接受的~
(有个不太理解,就是不清楚,这个是不是限制了周围所有的)
代码运行效果
就是会在代码所在目录去找,看看有没有名为Data的文件夹。没有就创建一个。
之后,再根据特定捕捉到的漏洞,进行爬虫,把对应的信息写入这个文件夹中,然后存储为json格式的文件。并转成可以看中文的格式的编码。这样让我的Teamates,就算不懂代码,也可以直接点开这个文件来看数据。
代码如下
import requests
import os
import json
def getAllJson(Session, data, headers):
url = 'http://219.136.133.163:8000/Pages/Commonpage/AsyGetData.asmx/GetParkList'
res = Session.post(url, data=data, headers=headers)
res.encoding = 'utf-8'
with open('./Data/' + data['cp'] + '.json', 'w') as f:
json.dump(res.json(), f, ensure_ascii=False)
if __name__ == '__main__':
headers = {
'X-Requested-With': 'XMLHttpRequest',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36'
}
pageSession = requests.Session()
url = 'http://219.136.133.163:8000/Pages/Commonpage/AsyGetData.asmx/GetParkList'
pageSession.get(url, headers=headers)
data = {
'cp': '1',
'ps': '10',
'kw': '',
'lon': 'undefined',
'lat': 'undefined',
'type': 'undefined'
}
if not os.path.exists('./Data'):
os.mkdir('./Data')
for i in range(318):
data['cp'] = str(i + 1)
getAllJson(pageSession, data, headers)