多线程百度网盘爬虫Python完整源码

本文将分享一个使用Python编写的多线程百度网盘爬虫的完整源码,详细解析其工作原理和技术实现,帮助读者深入理解Python爬虫及多线程技术在实际项目中的应用。
摘要由CSDN通过智能技术生成
#coding: utf8
 
import re #正则表达式模块
 
import urllib2 #获取URLs的组件
 
import time
 
from Queue import Queue
 
import threading, errno, datetime
 
import json
 
import requests #Requests is an Apache2 Licensed HTTP library
 
import MySQLdb as mdb
 
 
 
DB_HOST = '127.0.0.1'
 
DB_USER = 'root'
 
DB_PASS = ''
 
 
 
 
 
#以下是正则匹配规则
 
re_start = re.compile(r'start=(\d+)') #\d 表示0-9 任意一个数字 后面有+号 说明这个0-9单个数位出现一到多次 比如21312314
 
re_uid = re.compile(r'query_uk=(\d+)') #查询编号
 
re_urlid = re.compile(r'&urlid=(\d+)') #url编号
 
 
 
ONEPAGE = 20 #一页数据量
 
ONESHAREPAGE = 20 #一页分享连接量
 
 
 
#缺少专辑列表
 
URL_SHARE = 'http://yun.baidu.com/pcloud/feed/getsharelist?auth_type=1&start={start}&limit=20&query_uk={uk}&urlid={id}' #获得分享列表
 
URL_FOLLOW = 'http://yun.baidu.com/pcloud/friend/getfollowlist?query_uk={uk}&limit=20&start={start}&urlid={id}' #获得订阅列表
 

URL_FANS = 'http://yun.baidu.com/pcloud/friend/getfanslist?query_uk={uk}&limit=20&start={start}&urlid={id}' # 获取关注列表
 
QNUM = 1000
 
hc_q = Queue(20) #请求队列
 
hc_r = Queue(QNUM) #接收队列
 
success = 0
 
failed = 0
 
 
 
def req_worker(inx): #请求
 
    s = requests.Session() #请求对象
 
    while True:
 
        req_item = hc_q.get() #获得请求项
 
        
 
        req_type = req_item[0] #请求类型,分享?订阅?粉丝?
 
        url = req_item[1] #url
 
        r = s.get(url) #通过url获得数据
 
        hc_r.put((r.text, url)) #将获得数据文本和url放入接收队列
 
        print "req_worker#", inx, url #inx 线程编号; url 分析了的 url
 
        
 
def response_worker(): #处理工作
 
    dbconn = mdb.connect(DB_HOST, DB_USER, DB_PASS, 'baiduyun', charset='utf8')
 
    dbcurr = dbconn.cursor()
 
    dbcurr.execute('SET NAMES utf8')
 
    dbcurr.execute('set global wait_timeout=60000') #以上皆是数据库操作
 
    while True:
 
        """
        #正则备注
        match() 决定 RE 是否在字符串刚开始的位置匹配
        search() 扫描字符串,找到这个 RE 匹配的位置
        findall() 找到 RE 匹配的所有子串,并把它们作为一个列表返回
        finditer() 找到 RE 匹配的所有子串,并把它们作为一个迭代器返回
                  百度页面链接:http://pan.baidu.com/share/link
python学习课件+python源码90个合集: 002用Python设计第一个游戏(课件+源代码) 004改进我们的小游戏(课件+源代码) 005闲聊之Python的数据类型(课件+源代码) 007了不起的分支和循环(课件) 008了不起的分支和循环2(课件+源代码) 009了不起的分支和循环3(课件+源代码) 017函数:Python的乐高积木(课件+源代码) 019函数:我的地盘听我的(课件+源代码) 022函数:递归是神马(课件+源代码) 023递归:这帮小兔崽子(课件+源代码) 024递归:汉诺塔(课件+源代码) 028文件:因为懂你,所以永恒(课件+源代码) 029文件:一个任务(课件+源代码) 031永久存储:腌制一缸美味的泡菜(课件+源代码) 034丰富的else语句及简洁的with语句(课件+源代码) 034丰富的else语句及简洁的with语句(课件+源代码)(1) 036类和对象:给大家介绍对象(课件 源代码) 037类和对象:面向对象编程(课件 源代码) 038类和对象:继承(课件 源代码) 039类和对象:拾遗(课件 源代码) 045魔法方法:属性访问(课件 源代码) 046魔法方法:描述符(Property的原理)(课件 源代码) 047魔法方法:定制序列(课件 源代码) 048魔法方法:迭代器(课件 源代码) 049乱入:生成器(课件) 050模块:模块就是程序(课件 源代码) 051模块:__name__=_'__main___'、搜索路径和包(课件 源代码) 052模块:像个极客一样去思考(课件) 053论一只爬虫的自我修养(课件) 054论一只爬虫的自我修养2:实战(课件 源代码) 055论一只爬虫的自我修养3:隐藏(课件 源代码) 056论一只爬虫的自我修养4:OOXX(源代码) 062论一只爬虫的自我修养10:安装Scrapy(课件+软件包) 063论一只爬虫的自我修养11:Scrapy框架之初窥门径(课件 源代码) 064GUI的终极选择:Tkinter(课件 源代码) 065GUI的终极选择:Tkinter2(源代码) 066GUI的终极选择:Tkinter3(源代码) 067GUI的终极选择:Tkinter4(源代码) 068GUI的终极选择:Tkinter5(源代码) 069GUI的终极选择:Tkinter6(源代码) 070GUI的终极选择:Tkinter7(源代码) 071GUI的终极选择:Tkinter8(源代码) 072GUI的终极选择:Tkinter9(源代码) 073GUI的终极选择:Tkinter10(源代码) 074GUI的终极选择:Tkinter11(源代码) 075GUI的终极选择:Tkinter12(源代码) 076GUI的终极选择:Tkinter13(源代码) 077GUI的终极选择:Tkinter14(源代码) 078Pygame:初次见面,请大家多多关照(源代码) 080Pygame:事件(源代码) 081Pygame:提高游戏的颜值1(源代码) 082Pygame:提高游戏的颜值2(源代码) 083Pygame:提高游戏的颜值3(源代码) 084Pygame:基本图形绘制(源代码) 085Pygame:动画精灵(源代码) 086Pygame:碰撞检测(源代码) 087Pygame:播放声音和音效(课件 源代码) 088Pygame:摩擦摩擦(源代码) 089Pygame:游戏胜利(源代码) 090Pygame:飞机大战1(源代码) 091Pygame:飞机大战2(源代码) 093Pygame:飞机大战4(源代码) 094Pygame:飞机大战5(源代码) 095Pygame:飞机大战6(源代码) 096Pygame:飞机大战7(源代码) easygui-docs-0.96 Pyhon之常用操作符(课件) 下载必看.txt 元组:戴上了枷锁的列表(课件) 函数:内嵌函数和闭包(课件) 函数:灵活即强大(课件) 列表:一个打了激素的数组2(课件) 列表:一个打了激素的数组3(课件) 列表:一个打了激素的数组(课件) 字典:当索引不好用时(课件) 字符串:各种奇葩的内置方法(课件) 字符串:格式化(课件) 小插曲之变量和字符串(课件) 序列!序列!(课件) 异常处理:你不可能总是对的(课件) 愉快的开始(课件)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值