第十一讲 多线程爬虫

本文探讨了程序进程和线程的关系,介绍了多线程的理解,并详细讲解了线程状态,强调了队列在避免线程混乱中的作用。同时,提到了使用pymongo写入MongoDB以及三种多线程爬虫的创建方法,包括直接使用模块、自定义线程类和生产者消费者模式。最后,解释了生产者消费者模式如何解决数据耦合度问题。
摘要由CSDN通过智能技术生成

程序进程和线程之间的关系

在这里插入图片描述

对多线程和多进程的理解

在这里插入图片描述
以上内容只做简单总结,不理解的可以查阅其他文章。

线程状态

在这里插入图片描述

  • 堵塞状态线程想要重新运行先要加入就绪队列
  • 线程一旦阻塞,造成线程调度混乱;线程的执行状态是无法控制的。线程的执行状态是混乱的
  • 想要有序,需要使用队列
    队列的作用对象不是线程,而是任务

pymongo写入mongo

在这里插入一个知识点,方面理解下面的程序:
在这里插入图片描述
host和port有默认值可以不写,其它代码可以与mongo命令对比学习。item为文档数据。

线程创建方法

主要有三种多线程爬虫创建方式:

(一)使用python已经设置好的模块
在这里插入图片描述
示例代码:

import requests
import pymongo
import threading


def get_data_json(url, page):
    """"""
    headers = {
        'user-agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36'
    }
    params = {
        'timestamp': '1595207127325',
        'countryId': '',
        'cityId': '',
        'bgIds': '',
        'productId': '',
        'categoryId': '',
        'parentCategoryId': '',
        'attrId': '',
        'keyword': '',
        'pageIndex': page,
        'pageSize': '10',
        'language': 'zh-cn',
        'area': 'cn',
    }
    response = requests.get(url, headers=headers, params=params)
    return response.json()


def write_to_mongo(data):
    """"""
    print(data)
    db['招聘信息'].update({'PostId':data['PostId']},{'$set&#
  • 5
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值