• 网络爬虫-使用Python抓取网页数据


     

    搬自大神boyXiong的干货!

    闲来无事,看看了Python,发现这东西挺爽的,废话少说,就是干

    • 准备搭建环境 
      • 因为是MAC电脑,所以自动安装了Python 2.7的版本
      • 添加一个 库 Beautiful Soup ,方法这里说两种 
        • 1.在终端输入 pip install BeautifulSoup
        • 2.手动下载包后,终端切换到 解压的文件夹,输入 sudo python setup.py install 下载地址BeautifulSoup
    • 开始写代码吧 
      • 先找一个想要抓取东西的网站,这里我就随便找一个吧 地址是:http://movie.douban.com/chart
      • 好了在终端输入 vim 我知道这个东西,对于新手来说,就是一个挑战,这里我也建议使用轻量的Sublime
      • 代码如下 (注意python是严格的缩进,以下代码要顶格写)
    1 #-*- coding:utf-8 -*-
    2 import urllib2
    3 import urllib
    4 html=urllib2.urlopen("http://movie.douban.com/chart").read()
    5 print html
    • 输出的结果就是一个HTML的网页,这里我就看到自己想要抓取的图片和图片名的文字片段
    <a class="nbg" href="http://movie.douban.com/subject/24879839/"  title="道士下山">
               <img src="http://img3.douban.com/view/movie_poster_cover/ipst/public/p2251450614.jpg" alt="道士下山" class=""/>
    </a>
    • 分析我们想要的,一个是图片的名称,一个是图片的链接地址,直接上Python代码
    复制代码
     1 #-*- coding:utf-8 -*-
     2 import urllib2
     3 from bs4 import BeautifulSoup
     4 
     5 import sys  
     6 reload(sys)  
     7 sys.setdefaultencoding('utf8')
     8 
     9 # 函数
    10 def  printPlistCode():
    11     #1.得到这个网页的 html 代码 #
    12     html = urllib2.urlopen("http://movie.douban.com/chart").read()
    13 
    14     #2.转换 一种格式,方便查找
    15     soup = BeautifulSoup(html)
    16     #3.  得到 找到的所有 包含 a 属性是class = nbg 的代码块,数组
    17     liResutl = soup.findAll('a', attrs = {"class" : "nbg"})
    18     #4.用于拼接每个字典的字符串
    19     tmpDictM = ''
    20 
    21     #5. 遍历这个代码块  数组
    22     for li in liResutl:
    23 
    24         #5.1 找到 img 标签的代码块 数组
    25         imageEntityArray = li.findAll('img')
    26 
    27         #5.2 得到每个image 标签
    28         for image in imageEntityArray:
    29             #5.3 得到src 这个属性的 value  后面也一样 类似 key value
    30             link = image.get('src')
    31             imageName = image.get('alt')
    32             #拼接 由于 py中 {} 是一种数据处理格式,类似占位符
    33             tmpDict = '''@{0}@"name" : @"{1}", @"imageUrl" : @"{2}"{3},'''
    34 
    35             tmpDict =  tmpDict.format('{',imageName,link,'}')
    36 
    37             tmpDictM = tmpDictM + tmpDict
    38 
    39     #6.去掉最后一个 , 
    40     tmpDictM = tmpDictM[0:len(tmpDictM) - 1].decode('utf8')
    41 
    42     #7 拼接全部
    43     restultStr = '@[{0}];'.format(tmpDictM)
    44 
    45     print restultStr
    46 
    47 
    48 if __name__ == '__main__':
    49     printPlistCode()
    复制代码
    • 输出结果就是Objective-C的 数组
    复制代码
    @[@{@"name" : @"进击的巨人真人版:前篇", @"imageUrl" : @"http://img3.douban.com/view/movie_poster_cover/ipst/public/p2251690571.jpg"},@{@"name" : @"花与爱丽丝杀人事件", @"imageUrl" : @"http://img3.douban.com/view/movie_poster_cover/ipst/public/p2222398443.jpg"},@{@"name" : @"小黄人大眼萌", @"imageUrl" : @"http://img4.douban.com/view/movie_poster_cover/ipst/public/p2258235689.jpg"},@{@"name" : @"小森林 冬春篇", @"imageUrl" : @"http://img4.douban.com/view/movie_poster_cover/ipst/public/p2215147728.jpg"},@{@"name" : @"道士下山", @"imageUrl" : @"http://img3.douban.com/view/movie_poster_cover/ipst/public/p2251450614.jpg"},@{@"name" : @"深夜食堂 电影版", @"imageUrl" : @"http://img3.douban.com/view/movie_poster_cover/ipst/public/p2205014862.jpg"},@{@"name" : @"小男孩", @"imageUrl" : @"http://img4.douban.com/view/movie_poster_cover/ipst/public/p2230105606.jpg"},@{@"name" : @"头脑特工队", @"imageUrl" : @"http://img4.douban.com/view/movie_poster_cover/ipst/public/p2231021196.jpg"},@{@"name" : @"百元之恋", @"imageUrl" : @"http://img4.douban.com/view/movie_poster_cover/ipst/public/p2205471169.jpg"},@{@"name" : @"杀破狼2", @"imageUrl" : @"http://img4.douban.com/view/movie_poster_cover/ipst/public/p2246885606.jpg"}];
    复制代码

    • 使用Xcode 写到Plist中去
    复制代码
    #import <Foundation/Foundation.h>
    
    int main(int argc, const char * argv[]) {
    
    
        NSArray *plistArray = @[@{@"name" : @"进击的巨人真人版:前篇", @"imageUrl" : @"http://img3.douban.com/view/movie_poster_cover/ipst/public/p2251690571.jpg"},@{@"name" : @"花与爱丽丝杀人事件", @"imageUrl" : @"http://img3.douban.com/view/movie_poster_cover/ipst/public/p2222398443.jpg"},@{@"name" : @"小黄人大眼萌", @"imageUrl" : @"http://img4.douban.com/view/movie_poster_cover/ipst/public/p2258235689.jpg"},@{@"name" : @"小森林 冬春篇", @"imageUrl" : @"http://img4.douban.com/view/movie_poster_cover/ipst/public/p2215147728.jpg"},@{@"name" : @"道士下山", @"imageUrl" : @"http://img3.douban.com/view/movie_poster_cover/ipst/public/p2251450614.jpg"},@{@"name" : @"深夜食堂 电影版", @"imageUrl" : @"http://img3.douban.com/view/movie_poster_cover/ipst/public/p2205014862.jpg"},@{@"name" : @"小男孩", @"imageUrl" : @"http://img4.douban.com/view/movie_poster_cover/ipst/public/p2230105606.jpg"},@{@"name" : @"头脑特工队", @"imageUrl" : @"http://img4.douban.com/view/movie_poster_cover/ipst/public/p2231021196.jpg"},@{@"name" : @"百元之恋", @"imageUrl" : @"http://img4.douban.com/view/movie_poster_cover/ipst/public/p2205471169.jpg"},@{@"name" : @"杀破狼2", @"imageUrl" : @"http://img4.douban.com/view/movie_poster_cover/ipst/public/p2246885606.jpg"}];
        //路径可以自己选择
        [plistArray writeToFile:@"/Users/xxx/Desktop/test/movie.plist" atomically:YES];
    
        return 0;
    }
    复制代码

    • 到这里,就可以看到plist 文件可以用于测试了 
      这里写图片描述
    • 如果想要复制粘贴这里面的代码,那就选择Sublime编辑器
    • (欢迎转帖,请附上源地址boyXiong)
    本博文由博主根据资料或其他优秀博文整理而成,转载请注明出处,谢谢!
  • 相关阅读:
    串口应用
    状态栏颜色
    冒泡排序
    快速排序
    good软件测试博客地址
    软件测试面试题
    股票基础知识
    软件测试基本知识
    软件测试流程
    mycat实现分库分表(二)
  • 原文地址:https://www.cnblogs.com/Apolla/p/4756109.html
Copyright © 2020-2023  润新知