分析AJAX抓取今日头条街拍美图(存储)

来源:互联网 发布:ubuntu php ide 编辑:程序博客网 时间:2024/05/29 10:43

视频学习

存储在本地

import osfrom hashlib import md5def download_image(url):    print ('下载图片',url)    try:        response = requests.get(url)        if response.status_code==200:            save_image(response.content)            #return response.text        #content返回二进制内容,text返回网页正常显示结果        return None    except RequestException:        print ('请求图片出错!')        return None#图片保存本地#md5是为了排除重复图片,如果内容相同,md5也会相同def save_image(content):    file_path='{0}/{1}.{2}'.format(os.getcwd(),md5(content).hexdigest(),'jpg')    if not os.path.exists(file_path):        with open(file_path,'wb') as f:            f.write(content)            f.close()

实验结果:
这里写图片描述


存储在mongodb

MONGO_URL='localhost'MONGO_DB='toutiao'MONGO_TABLE='toutiao'import pymongoclient=pymongo.MongoClient(MONGO_URL,connect=false)db=client(MONGO_DB)def save_to_mongo(result):    if db[MONGO_TABLE].insert(result):        print ('存储到MongoDB成功!',result)        return True    return false

之前都是对一个页面进行处理,现在要修改offset,对多个页面进行处理,可开启多线程

多线程处理

from multiprocess import PoolGROUP_START=1GROUP_END=20KEYWORD='街拍'def main(offset):    html = get_page_index(offset,KEYWORD)    #print ('AJAX请求返回结果:')    #print (html)    for url in parse_page_index(html):        #print (url)        html=get_page_detail(url)        if html:            result=parse_page_detail(html,url)            #print (result)            if result:                save_to_mongo(result)if __name__=='__main__':    #main()    #multiprocess    groups=[x*20 for x in range(GROUP_START,GROUP_END + 1)]    pool=Pool()    pool.map(main,groups)

完整代码下载

    • 存储在本地
    • 存储在mongodb
    • 多线程处理

0 0
原创粉丝点击