爬取广州所有停车场数据(Python)(并行加速版本)

之前做过这个的单进程版本。这次使用多进程来实现~
爬取广州所有停车场数据(Python)

大家可以对比着看一下,在原来的单进程爬虫的基础进行改进而得到的产品。

import requests
import os
import json
import multiprocessing
import time


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__':
    st = time.time()
    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')
    p_list = []

    for i in range(318):
        data['cp'] = str(i + 1)
        p = multiprocessing.Process(target=getAllJson, args=(pageSession, data, headers))
        p.start()
        p_list.append(p)
        if len(p_list) == 16:
            for p in p_list:
                p.join()
            p_list = []
    et = time.time()
    print(et - st)
阅读更多

扫码向博主提问

肥宅_Sean

非学,无以致疑;非问,无以广识
  • 擅长领域:
  • Python
  • C++
  • 数学
去开通我的Chat快问
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/a19990412/article/details/79947385
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭