搬自大神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)

网络爬虫-使用Python抓取网页数据的更多相关文章

  1. Asp.net 使用正则和网络编程抓取网页数据(有用)

    Asp.net 使用正则和网络编程抓取网页数据(有用) Asp.net 使用正则和网络编程抓取网页数据(有用) /// <summary> /// 抓取网页对应内容 /// </su ...

  2. python3.4学习笔记(十七) 网络爬虫使用Beautifulsoup4抓取内容

    python3.4学习笔记(十七) 网络爬虫使用Beautifulsoup4抓取内容 Beautiful Soup 是用Python写的一个HTML/XML的解析器,它可以很好的处理不规范标记并生成剖 ...

  3. Python 抓取网页并提取信息(程序详解)

    最近因项目需要用到python处理网页,因此学习相关知识.下面程序使用python抓取网页并提取信息,具体内容如下: #---------------------------------------- ...

  4. java抓取网页数据,登录之后抓取数据。

    最近做了一个从网络上抓取数据的一个小程序.主要关于信贷方面,收集的一些黑名单网站,从该网站上抓取到自己系统中. 也找了一些资料,觉得没有一个很好的,全面的例子.因此在这里做个笔记提醒自己. 首先需要一 ...

  5. python抓取网页例子

    python抓取网页例子 最近在学习python,刚刚完成了一个网页抓取的例子,通过python抓取全世界所有的学校以及学院的数据,并存为xml文件.数据源是人人网. 因为刚学习python,写的代码 ...

  6. web scraper 抓取网页数据的几个常见问题

    如果你想抓取数据,又懒得写代码了,可以试试 web scraper 抓取数据. 相关文章: 最简单的数据抓取教程,人人都用得上 web scraper 进阶教程,人人都用得上 如果你在使用 web s ...

  7. 【iOS】正則表達式抓取网页数据制作小词典

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/xn4545945/article/details/37684127 应用程序不一定要自己去提供数据. ...

  8. PHP网络爬虫实践:抓取百度搜索结果,并分析数据结构

    百度的搜索引擎有反爬虫机制,我先直接用guzzle试试水.代码如下: <?php /** * Created by Benjiemin * Date: 2020/3/5 * Time: 14:5 ...

  9. 使用HtmlAgilityPack批量抓取网页数据

    原文:使用HtmlAgilityPack批量抓取网页数据 相关软件点击下载登录的处理.因为有些网页数据需要登陆后才能提取.这里要使用ieHTTPHeaders来提取登录时的提交信息.抓取网页  Htm ...

随机推荐

  1. WP8_访问ListBox中的Item项中的某个元素

    How to access a Control placed inside ListBox ItemTemplate in WP7(转) In this post I am going to talk ...

  2. Loadrunner:安装LR11.0破解步骤及License

    破解步骤: 1.关闭LR相关程序 2.运行LicenseDelete程序,清除LR原来的License 3.将lm70.dll和mlr5lprg.dll这两个文件复制并粘贴到LR安装目录下的bin文件 ...

  3. 捣蛋phpwind之WindFrameWork

    一直都有关注phpwind这个开源产品,从9.0开始就好关注拉,因为官方说把之前的代码重写了一遍,融入了windFramework这个框架,代码真的挺优美的,今日在做社区的一些功能,心血来潮就参考了p ...

  4. mysql在生产环境下有大量锁表,又不允许重启的情况下的处理办法

    mysql在生产环境下有大量锁表,又不允许重启的情况下的处理办法 满头大汗的宅鸟该怎么办呢? mysql -u root -e "show processlist"|grep -i ...

  5. 使用C#中JavaScriptSerializer类将对象转换为Json格式数据

    将对象转换为json格式字符串: private JavaScriptSerializer serializer = new JavaScriptSerializer(); protected voi ...

  6. C#winform导出数据到Excel的类

    /// <summary> /// 构造函数 /// </summary> public ExportData() { } /// <summary> /// 保存 ...

  7. sql 基本操作

    SQL基本操作   一数据类型1整数型 int2精确数值型 decimal(n,p)n为总位数,p为小数位数3浮点型 float4字符型char(n)n最大为4,varchar(n)5日期型datat ...

  8. MessageBox详解

    MessageBox.Show();可谓是winform开发中用的次数最多的东东啦.先贴一张msdn的图解 msdn好像没有更新哎,只提供了这几种方法,并且参数名称和最新的有差别,但实际上messag ...

  9. [leetcode]_Container With Most Water

    题目:在二维坐标系下,有很多个挡板,有两个挡板之间能够积蓄的水的最大面积.如下图所示: 思路:我只想到暴力解法,用O(n2)的时间复杂度算出任意两个挡板形成的面积,这必须的过不了. 优化解法:O(n) ...

  10. MongoDB(3):小的细节问题

    1.文档 {“greeting”:“hello,world”,“foo”: 3} 文档中的键/值对是有序的,下面的文档与上面的文档是完全不同的两个文档. {“foo”: 3 ,“greeting”:“ ...