简单地说,我的网络爬虫有两个主要的工作。收集器和Crawler,收集器将收集每个站点的所有url项,并存储非重复的url。爬虫将从存储中获取urls,提取所需的数据并将其存储起来。
2台机器
目的:抓取100个站点,尽量减少瓶颈情况。
第一种情况:收集器*请求(Urllib)所有站点,收集每个站点的url项,如果它不是重复的url,则插入端口1上的存储机器。爬虫*从存储端口1获取url,*请求站点并提取所需数据,*将其存储在端口2上。
这会导致请求网站和mySql连接的连接瓶颈。
第二种情况:收集器不是在机器上插入,而是将url存储在我自己的迷你数据库文件system.There is no *读取一个大文件(使用os命令技术)只是*写(追加)和*删除文件的头文件。
这导致连接请求网站和I/O (读、写)瓶颈(可能是)
这两种情况都有收集和爬行100个站点的CPU绑定原因。
我听说I/O绑定使用多线程,CPU绑定使用多处理。
两样都行吗?好斗?有什么想法或建议吗?
发布于 2013-07-11 19:01:51
查看grequests,它不执行实际的多线程或多处理,但它的扩展比两者都要好得多。
https://stackoverflow.com/questions/17601124
复制相似问题