搬自大神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. javaSE第十二天

    第十二天    64 1. Scanner的使用(了解)    64 (1)在JDK5以后出现的用于键盘录入数据的类.    64 (2)构造方法:    64 (4)要掌握的两个方法    65 ( ...

  2. Web.config配置文件

    优点:Web.config配置文件使得ASP.NET应用程序的配置变得灵活高效和容易实现并为ASP.NET应用提供了可扩展的配置,使得应用程序能够自定义配置,同时还包括的优点有:配置设置易读性.更新的 ...

  3. Javascript 补位运算符

    看到一个题目~~3.14得到是3,一下子有点蒙,之前在Javascript中完全没有见过~这个运算符.经查才知道~是补位运算符,但是跟原码反码补码又有点不同(在反码这一块,不记正负),好吧,大学的东西 ...

  4. Hub control

    Hub(中心) 中心页是用户进入应用的入口点.中心页在丰富的平移视图中显示内容,这样用户一眼就能看见新鲜有趣的内容,从而吸引他们深入了解你的应用中的更多内容.中心显示不同的内容类别,每个类别映射到应用 ...

  5. 03-图片浏览器(plist的简单应用)

    ViewController.h文件中: @interface ViewController : UIViewController - (IBAction)sliderValueChange:(UIS ...

  6. Navicat Premium 11 For Mac 注册机

    http://mac.pcbeta.com/thread-138357-1-1.html

  7. php输出utf-8格式

    header("Content-type:text/html;charset=utf-8"); 输出数据前插入以上代码,以utf-8格式输出,避免乱码

  8. [IIS] eset/Restart/Recycling/Refresh 的区别

    iisreset -- 对象是整个IIS服务器,这个操作会先停止万维网的服务(World Wide Web Publishing Service)然后在重启此服务,因此所有的网站都会先停止服务然后在重 ...

  9. delphi xe6 打开andoridGPS设置

      Androidapi.JNI.JavaTypes,    Androidapi.JNI.GraphicsContentViewText,   Androidapi.JNI.Location,   ...

  10. 利用HttpWebRequest访问WebApi

    WebApi现在越来越流行,下面给出利用HttpWebRequest访问WebApi的工具方法: 1.利用基准URL和参数字典生成完整URL /// <summary> /// 生成URL ...