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