(68)-- 爬取糗百信息

# 爬取糗百信息

import threading
from queue import Queue
import requests
from lxml import etree
import time

# 最大开启采集线程数(并发数)
concurrent = 3
# 解析并发数
conparse = 3

class Crawl(threading.Thread):
    def __init__(self,i,task_q,data_q):
        self.task_q = task_q
        self.data_q = data_q
        self.i = i
        super(Crawl, self).__init__()
    def run(self):
        print('%d号采集线程启动' % self.i)
        while not self.task_q.empty():
            fullurl = self.task_q.get()
            response = requests.get(fullurl)
            if 200 <= response.status_code <= 300:
                html = response.text
                data_q.put(html)
            else:
                print('采集异常',response.status_code)

            time.sleep(1)
        print('%d号采集线程结束over' % self.i)


class Parse(threading.Thread):
    def __init__(self,i,data_q,crawl_list):
        self.i = i
        self.data_q = data_q
        self.crawl_list = crawl_list
        self.is_parse = True
        super(Parse, self).__init__()

    def run(self):
        print('%d号解析线程开启' % self.i)
        # 判断是否结束解析线程条件
        # 1.采集线程是否存活
        # 2.数据队列是否为空
        while True:
            for t in self.crawl_list:
                # 判断采集线程是否存活

                if t.is_alive():
                    break
            else:
                if self.data_q.empty():
                    self.is_parse = False

            # 线程有存活的
            if self.is_parse:
                try:
                    html = self.data_q.get(timeout=3)
                    self.parse(html)
                except Exception as e:
                    pass
            else:
                break

        print('%d号解析线程结束' % self.i)

    # 解析页面
    def parse(self,html):
        html = etree.HTML(html)
        nick = html.xpath('//h2/text()')
        print(nick)

if __name__ == '__main__':
    # 任务队列
    task_q = Queue()
    # 数据队列
    data_q = Queue()

    base_url = 'https://www.qiushibaike.com/8hr/page/%d/'

    for i in range(1,13 + 1):
        fullurl = base_url % i
        task_q.put(fullurl)

    #创建采集线程
    crawl_list = []
    for i in range(1,concurrent + 1):
        t = Crawl(i,task_q,data_q)
        t.start()
        crawl_list.append(t)

    #创建解析线程
    parse_list = []
    for i in range(conparse):
        t = Parse(i,data_q,crawl_list)
        t.start()
        parse_list.append(t)

    # 阻塞主进程(等待采集和解析工作完毕)
    for t in crawl_list:
        t.join()
    for t in parse_list:
        t.join()









# 爬取结果如下:

C:\Users\cz\AppData\Local\Programs\Python\Python35\python.exe E:/Python/python爬虫/14.py
1号采集线程启动
2号采集线程启动
3号采集线程启动
0号解析线程开启
1号解析线程开启
2号解析线程开启
['\n钻戒礼服和我的她\n', '\n蕾丝隐形船袜\n', '\n单身穷哥\n', '匿名用户', '\n流民不是流氓\n', '\n驯猴师\n', '\n半颗真心不喂狗\n', '\n吃了两碗又盛\n', '\n无^_^昵称\n', '\n佩基\n', '\n愛是寂寞撒的谎\n', '\n夕冬温存\n', '\n江关一叶秋\n', '\n野野这小孩很乖\n', '\n江南字子川。\n', '\n鲲鹏九天\n', '\n黄山小妖\n', '匿名用户', '\n安贤3\n', '\n陌上花还未开\n', '\n该用户已渡劫升仙\n', '\n愛是寂寞撒的谎\n', '匿名用户', '\n其实真不糗\n', '\n七良\n']
['\n西湖醋鱼夹生\n', '\n吃了两碗又盛\n', '\n醉笑红尘济南\n', '\n只为你脱裤子\n', '\n礁石_\n', '\n吃了两碗又盛\n', '\n(驹迷)真的爱你\n', '\n婚纱摄影PS修图\n', '\n陈雪2\n', '\n偏执患者。\n', '\n樱落蝶舞\n', '\n星劫\n', '\n天若有情被抢了\n', '\n花七七…\n', '匿名用户', '\n调皮丫头长的美\n', '\n胡子灬哥\n', '匿名用户', '\n坦然平静\n', '\nMs小野猫\n', '\n逗逼模式已完成\n', '\n爱哭的瓶子\n', '\nYCCCCCaaa…\n', '\n夕冬温存\n', '匿名用户']
['\n皇家御赐最佳官人\n', '\n道士下山会女神\n', '\n花七七…\n', '\n用尽一生的恨\n', '\n丙嘣\n', '\n愛是寂寞撒的谎\n', '\n驯猴师\n', '\n1飞翔的雄鹰\n', '\n白百丽儿\n', '\n糖太甜苦瓜太苦\n', '\n风吹屁股蛋子疼\n', '\n倾心倾情%%\n', '\n阳春佐罗\n', '\n周易师叔\n', '\n蜜姐店铺\n', '\n偷情贼\n', '\n花安静\n', '\n11鈫\n', '\n风吹屁股蛋子疼\n', '\n修心徒^^\n', '\n青刺莓\n', '\n吃货最怕饿梦.\n', '\n阿木963\n', '\n抱我51\n', '\n该用户已渡劫升仙\n']
['匿名用户', '\n站上冰箱装高冷\n', '\n表姨父\n', '\n好吃的焦糖饼干………\n', '\n听雨ing\n', '\n墙交术之霉\n', '\n我是煮茶\n', '\n花七七…\n', '\n丫偷儿\n', '\n独宠丽妃\n', '\n吃了两碗又盛\n', '\n抱我51\n', '\n抒情式、情歌\n', '\n爱哭的瓶子\n', '\n婷婷依卓\n', '\n浅浅一笑恰逢你来\n', '\n胖香\n', '匿名用户', '匿名用户', '\n夜~方丈带队上青楼…\n', '匿名用户', '\n别动呗\n', '\n白百丽儿\n', '匿名用户', '\nCapricorn…\n']
['\n在下&瞄人…\n', '\n孤心~魅影\n', '\n娇爷£\n', '\n加气混凝土移动师\n', '\n寂寞的烟0033\n', '\n我家熊孩子不熊\n', '\n赵赵赵小西\n', '\n随时离开\n', '\n林晓九的忧伤哥\n', '\n一个人擦擦地\n', '\n花美男MC\n', '\n好吃的焦糖饼干………\n', '\n下一站★改变\n', '\n璐璐℃\n', '\n梨花落尽柳花时\n', '\n愛是寂寞撒的谎\n', '\n跑呀!跑不掉了吧~…\n', '\n风拂轻尘\n', '\n緣來是伱\n', '\n坏坏好像不坏\n', '\n调皮丫头长的美\n', '\n兔子急了,还咬人\n', '\n向戴安澜将军致敬\n', '\n别回头,安好!\n', '\n哆啦A梦是我的\n']
['匿名用户', '\n狸土豆大人\n', '\n神化坏宝宝\n', '\n剧本丶\n', '\n别给哥喝酒\n', '\n倾心倾情%%\n', '\n爱哭的瓶子\n', '\n向昨天说再见。\n', '\n生活生不易活更难\n', '\n流民不是流氓\n', '\n哎,吆,喂\n', '\n纳花\n', '\n饭岛爱相随\n', '\n雁塔留雁雁不落\n', '\n防护镜\n', '\n西门爬墙\n', '\n公众号:自察社\n', '\n星劫\n', '\n『Neng』\n', '\n忘记。。。…\n', '\n素·敵\n', '\n王云(笨笨)\n', '\n二女子、\n', '\n鱼七七…\n', '\n上凹下凸\n']
['匿名用户', '\n偷惢\n', '\nA_宁静致远\n', '\n222/222\n', '\n留不住就放手吧\n', '\n◣听歌◥\n', '\n林晓九\n', '\n谁来装饰你的梦\n', '\n过夜的开水\n', '\n风丿行\n', '\n123开始猥琐\n', '\n傻妞也\n', '\n卖玫瑰的小男孩丶\n', '\n老刘忙_\n', '\n屋岩下的男孩\n', '\n偷惢\n', '\n王八与蛋\n', '\n天下第22帅他爸\n', '\n单身狗爱流浪猫\n', '\n绦子\n', '\n在下&瞄人…\n', '\n偷情贼\n', '\n酒中的痛\n', '\n遇到你是最美丽的意…\n', '\nQueroi\n']
['\n城中小草\n', '\n沃土秋实\n', '\n鲲鹏九天\n', '\n十三年资深潜水员\n', '\n淡淡的稻花香2\n', '\n驯猴师\n', '\n小咪^\n', '\n周景全\n', '\n黄山小妖\n', '\n孤独与你°\n', '\n吃了两碗又盛\n', '\n守龛人\n', '\n不帅但很能干的人\n', '\n鲲鹏九天\n', '\nπ_π拈花\n', '\n寂寞真诚\n', '\n失伈疯。\n', '\n卟乖(>_&…\n', '\n花脚猫的花\n', '\n我叫小贵\n', '\n傻菲°\n', '\n王八与蛋\n', '匿名用户', '\n不是很帅但很能干\n', '\n瑜儿好想你\n']
['\n夕冬温存\n', '\n小猪背起行囊\n', '\n你是俺di\n', '\n阿~塰\n', '\n琳妹儿(二)\n', '\n挖鼻孔的老虎\n', '\n把酒煮温\n', '\n该用户已渡劫升仙\n', '\n非法用户名zP9r…\n', '\n温柔小箭\n', '\n我是煮茶\n', '\n愛是寂寞撒的谎\n', '\n薄荷味白衬衫\\\\n…\n', '\n慕容语嫣~\n', '\n卖姑娘的大灰狼\n', '\n墙交术之霉\n', '\n愛是寂寞撒的谎\n', '\n富川人\n', '\n你家邻居叫马乐\n', '\n被抢糖吃de孩纸\n', '\n他城她梦丶\n', '\n悠悠我心*\n', '\n星劫\n', '\n驯猴师\n', '\n人送外号海伦子\n']
['\n大道独行我为仙\n', '\nV根号三\n', '\n伊伊wan\n', '\n天若有情被抢了\n', '\n请叫我狂奔\n', '\n十里柔情一帘幽梦\n', '\n羊皮为裘\n', '\n倾心倾情%%\n', '\n偷惢\n', '\n爱吃面条的龟\n', '\ndarling-汉…\n', '\n鲲鹏九天\n', '\n不甜不要钱i\n', '\n这个冬天只要拥抱\n', '\n叫我阿道\n', '\n“孔夫子”\n', '\n樱落蝶舞\n', '\n丶彧言\n', '\n小风吹,彼岸花开\n', '\n挚爱一人为她撸\n', '\nA-Mr.G\n', '\n挖鼻孔的老虎\n', '\n好吃的焦糖饼干………\n', '\n加腾鹰的手指\n', '\n我是煮茶\n']
['\n隔壁老王头儿66\n', '\n不帅但很能干的人\n', '\n消失在海里的鱼\n', '\n非法用户名kJ6G…\n', '\n实在不知道叫啥了\n', '\n素·敵\n', '\n偷情贼\n', '\n调皮的小汪汪\n', '\n秀气散发磊落光明\n', '\n道士下山会女神\n', '\n风吹屁股蛋子疼\n', '\n。地上一只鸭\n', '\n长风长醉\n', '\n迪丽冷九...\n', '\n石沐子\n', '\n樱落蝶舞\n', '\n星劫\n', '\n江哥007\n', '\nAiNuO\n', '\n自由之翼1314\n', '\n伺候不爽你弄死我\n', '\n鬼龙小爆\n', '\nif空空\n', '\n電动、小马达\n', '\n鑫酱就酱紫\n']
['\n西帝君\n', '\n吃货最怕饿梦.\n', '\n放屁成个调\n', '\n爱哭的瓶子\n', '\n枯藤扯着老树\n', '\n沐莘\n', '\n墙交术之霉\n', '\n王云(笨笨)\n', '\n愿你快乐不要悲伤\n', '\n奇怪的地球人\n', '匿名用户', '\n小月团子\n', '\n小风吹,彼岸花开\n', '\n调皮的小汪汪\n', '\n坚挺的大香蕉呀\n', '\n大三学长\n', '\n退隐段子手\n', '\n.炒粉\n', '\n贪吃的加菲猫疯了\n', '\n文艺小榴芒\n', '\n小风吹,彼岸花开\n', '\n花凝雪\n', '\n我家有个彪娘们\n', '\n心里藏你的梦\n', '\n漠落\n']
3号采集线程结束over
2号采集线程结束over
['匿名用户', '\nxzc454\n', '\n小时候可好咯\n', '\ncrazy土豆丝\n', '\n穿着棉袄吃冰棒\n', '\nDY交\n', '\n傻晴°\n', '\n春水无边\n', '\n么么么哒哒69\n', '\n叽喱咕噜︶\n', '\n星劫\n', '\n琦只~\n', '\n4+1=5\n', '\n挖鼻孔的老虎\n', '\n我真的屎匿名用户\n', '\n吃了两碗又盛\n', '\n傻月゛\n', '\n小心蛋毛\n', '匿名用户', '\n星星15\n', '\n驯猴师\n', '\n沐莘\n', '\n没有常的春藤\n', '\n不约而同丿\n', '\n不甜不要钱i\n']
1号采集线程结束over
1号解析线程结束
2号解析线程结束
0号解析线程结束

Process finished with exit code 0

兄弟连学python


Python学习交流、资源共享群:563626388 QQ


猜你喜欢

转载自blog.csdn.net/fredreck1919/article/details/79851036
68