30秒抓取广州所有停车场的具体信息

目标地址 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)

你可能感兴趣的:(30秒抓取广州所有停车场的具体信息)