美文网首页计算机技术杂类一起玩python程序员
30秒抓取广州所有停车场的具体信息

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

作者: 肥宅_Sean | 来源:发表于2018-04-05 21:01 被阅读9次

    目标地址 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秒抓取广州所有停车场的具体信息

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