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

分析工作流程是为了进行进行多线程爬取的时候,各部分协同更好,效率更高。比如采蜜,要找到花粉,要采花粉,飞回去要卸载花粉,一只工蜂(设计了一个爬虫执行整个过程)负责采蜜的,开了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实战计划--第二周第二节:爬取大规模数据的工作流分析)