根据上图,爬虫的核心就是中心的方框部分。这里分为三部分:URL管理器、网页下载器、网页解析器。
说的通俗一点就是:
- URL管理器:我要爬取哪些网站。
- 网页下载器:既然要爬取网站数据,总得获取到网页内容吧,这就需要下载网页。
- 网页解析器:网页有了,那就找到数据吧。网页涵盖数据这么多,怎么快速找到需要的数据?怎么定位呢?
废话不多说,开始我们的爬虫之旅。
#coding:utf8
'''
link: http://h.zhimaruanjian.com/?utm-source=xianyu&utm-keyword=?1
'''
from tuchong import url_manager, html_parser, html_outputer, html_downloader
class SpiderMain(object):
def __init__(self):
self.urls = url_manager.UrlManager()
self.downloader = html_downloader.HtmlDownloader()
self.parser = html_parser.HtmlParser()
self.outputer = html_outputer.HtmlOutputer()
def craw(self, root_url, user_nick):
html_cont = self.downloader.download(root_url)
new_urls = self.parser.parse_albums_urls(root_url, user_nick, html_cont)
count = 1
for link in new_urls:
self.urls.add_new_url(link)
while self.urls.has_new_url():
try:
new_url = self.urls.get_new_url()
html_cont = self.downloader.download(new_url)
print "craw %d : %s"%(count , new_url)
new_data = self.parser.parse_image(new_url,html_cont)
# self.urls.add_new_urls(new_urls)
self.outputer.collect_data(new_data)
count = count + 1
except:
print "craw fail"
self.outputer.output_html(user_nick)
if __name__ == "__main__":
print "begin"
user_nick = "shaineyy"
root_url = "http://h.zhimaruanjian.com/?utm-source=xianyu&utm-keyword=?1"
obj_spider = SpiderMain()
obj_spider.craw(root_url, user_nick)
print "finish"
当然,如果你真想学好所谓的爬虫,最好先学会基本的计算机知识,尤其是网络和算法知识,并且精通一门编程语言。这类半成品与真正的网络爬虫还有八万里的距离。如需要免费ip加扣裙齐思思酒肆贰六酒肆,本文实际上是在揭示一个道理:要想功夫深,哪能不吃苦呢?
在这个世界上,一切教人速成的伎俩,都是骗人的。