栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python爬虫编程思想(143):项目实战:多线程和多进程爬虫

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python爬虫编程思想(143):项目实战:多线程和多进程爬虫

         首先来学习使用多线程实现爬虫,这个案例抓取了豆瓣音乐Top250排行榜,只是本例去除去了将提取的结果保存为文件的功能,仅仅将提取的结果输出到Console上。本例使用了4个线程同时抓取不同的页面,并进行分析。

        本例创建了一个存储URL的池,就是一个列表。获取这个列表中URL的工作由get_url函数完成,该函数通过线程锁进行了同步。由于在获取URL后,会将这个URL从列表中删除,所以在多线程环境下必须对这个列表进行同步,否则可能会产生脏数据,也就是说,可能会造成多个线程获取了同一个URL。

import threading
import datetime
import requests
from bs4 import BeautifulSoup
import re
import time
# 记录开始时间
starttime = datetime.datetime.now()
# 创建线程锁
lock = threading.Lock()
# 从URL列表中获取URL,这是一个同步函数
def get_url():
    global urls
    # 获取URL之前,加锁  
    lock.acquire()
    if len(urls) == 0:
        lock.release()
        return ""
    else:
        url = urls[0]
        # 提取一个URL后,将这个URL从列表中删除
        del urls[0]
    
    # 完成工作后,释放锁
    lock.release()
    return url
headers = {
    'User-Agent':'Mozilla/5.0 (Macintosh; Intel M
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/870572.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号