美文网首页
Python实战计划--第二周第二节:爬取大规模数据的工作流分析

Python实战计划--第二周第二节:爬取大规模数据的工作流分析

作者: 唐宗宋祖 | 来源:发表于2016-05-28 13:22 被阅读56次

    分析工作流程是为了进行进行多线程爬取的时候,各部分协同更好,效率更高。比如采蜜,要找到花粉,要采花粉,飞回去要卸载花粉,一只工蜂(设计了一个爬虫执行整个过程)负责采蜜的,开了2个线程就有两个工蜂采蜜去了,另外一种呢,除了专门采蜜的工蜂(爬虫1:爬取信息,放到一个数据结构中存起来),还有一只专门运输的工蜂(爬虫2:存储处理信息,从数据结构中取信息,存数据库),开两个线程的时候就是4个蜂,同时呢,运输的慢的话既不影响协同,也不影响效率。
    观察页面特征
    设计工作流程
    为了程序运行实现自动化,各部分函数之间的函数协作,和各个函数的顺利运行保证了程序自动化的运行。各函数要处理的问题细化,逻辑性要强。

    import pymongo
        import requests
        from bs4 import BeautifulSoup
        import time
        
        client = pymongo.MongoClient('localhost', 27017)
        shoujihao = client['shoujihao_list']
        infomation = shoujihao['shoujihao_info']
        
        # url = 'http://bj.58.com/shoujihao/pn1'
          
        def sj_title_link(pages):
            for page in in range(1,pages+1):
                url = 'http://bj.58.com/shoujihao/pn{}'.format(host, page)
                wb_data = requests.get(url)
                time.sleep(1)
                soup = BeautifulSoup(wb_data.text, 'lxml')
                titles = soup.select('a.t > strong.number')
                links = soup.select('a.t')
                # prices = soup.select('b.price')
                for title, link in zip(titles, links):
                    if link.get('href').rfind("http://bj.58") != -1:
                        data = {
                            'title': title.get_text(),
                            'link': link.get('href'),
                            # 'price':price.get_text()
                        }
                        infomation.insert_one(data)
                    else:
                        pass
    

    相关文章

      网友评论

          本文标题:Python实战计划--第二周第二节:爬取大规模数据的工作流分析

          本文链接:https://www.haomeiwen.com/subject/nxqtdttx.html