码迷,mamicode.com
首页 > 编程语言 > 详细

如何入门 Python 爬虫?

时间:2016-04-30 18:14:36      阅读:188      评论:0      收藏:0      [点我收藏+]

标签:

转载请告知去转盘网:http://www.quzhuanpan.com 

1)首先你要明白爬虫怎样工作。
  想象你是一只蜘蛛,现在你被放到了互联“网”上。那么,你需要把所有的网页都看一遍。怎么办呢?没问题呀,你就随便从某个地方开始,比如说人民日报的首页,这个叫initial pages,用$表示吧。

2) 介绍

  Beautiful Soup。名气大,整合了一些常用爬虫需求。缺点:不能加载JS。

  Scrapy。看起来很强大的爬虫框架,可以满足简单的页面爬取(比如可以明确获知url pattern的情况)。用这个框架可以轻松爬下来如亚马逊商品信息之类的数据。但是对于稍微复杂一点的页面,如weibo的页面信息,这个框架就满足不了需求了。

  mechanize。优点:可以加载JS。缺点:文档严重缺失。不过通过官方的example以及人肉尝试的方法,还是勉强能用的。

  selenium。这是一个调用浏览器的driver,通过这个库你可以直接调用浏览器完成某些操作,比如输入验证码。

  cola。一个分布式爬虫框架。项目整体设计有点糟,模块间耦合度较高,不过值得借鉴。

3)举例

  # -*- coding: cp936 -*-
  import urllib2
  from BeautifulSoup import BeautifulSoup

 

  f = open(‘howtoTucao.txt‘,‘w‘)     #打开文件

  for pagenum in range(1,21):        #从第1页爬到第20页

     strpagenum = str(pagenum)      #页数的str表示
     print "Getting data for Page " + strpagenum   #shell里面显示的,表示已爬到多少页
     url = "http://www.zhihu.com/collection/27109279?page="+strpagenum  #网址
     page = urllib2.urlopen(url)     #打开网页
     soup = BeautifulSoup(page)      #用BeautifulSoup解析网页
    
     #找到具有class属性为下面两个的所有Tag
     ALL = soup.findAll(attrs = {‘class‘ : [‘zm-item-title‘,‘zh-summary summary clearfix‘] })

     for each in ALL :               #枚举所有的问题和回答
        #print type(each.string)
        #print each.name
        if each.name == ‘h2‘ :      #如果Tag为h2类型,说明是问题
            print each.a.string     #问题中还有一个<a..>,所以要each.a.string取出内容
            if each.a.string:       #如果非空,才能写入
                f.write(each.a.string)
            else :                  #否则写"No Answer"
                f.write("No Answer")
        else :                      #如果是回答,同样写入
            print each.string
            if each.string: 
                f.write(each.string)
            else :
                f.write("No Answer")
   f.close()                           #关闭文件

  如你所想,这里每一个点都可以供很多研究者十数年的研究。虽然如此,“路漫漫其修远兮,吾将上下而求索”。

  转载请告知去转盘网:http://www.quzhuanpan.com 

  

 

 

如何入门 Python 爬虫?

标签:

原文地址:http://www.cnblogs.com/hardmore/p/5449002.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!