网络爬虫-使用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)
 
网络爬虫-使用Python抓取网页数据的更多相关文章
- Asp.net 使用正则和网络编程抓取网页数据(有用)
		
Asp.net 使用正则和网络编程抓取网页数据(有用) Asp.net 使用正则和网络编程抓取网页数据(有用) /// <summary> /// 抓取网页对应内容 /// </su ...
 - python3.4学习笔记(十七) 网络爬虫使用Beautifulsoup4抓取内容
		
python3.4学习笔记(十七) 网络爬虫使用Beautifulsoup4抓取内容 Beautiful Soup 是用Python写的一个HTML/XML的解析器,它可以很好的处理不规范标记并生成剖 ...
 - Python 抓取网页并提取信息(程序详解)
		
最近因项目需要用到python处理网页,因此学习相关知识.下面程序使用python抓取网页并提取信息,具体内容如下: #---------------------------------------- ...
 - java抓取网页数据,登录之后抓取数据。
		
最近做了一个从网络上抓取数据的一个小程序.主要关于信贷方面,收集的一些黑名单网站,从该网站上抓取到自己系统中. 也找了一些资料,觉得没有一个很好的,全面的例子.因此在这里做个笔记提醒自己. 首先需要一 ...
 - python抓取网页例子
		
python抓取网页例子 最近在学习python,刚刚完成了一个网页抓取的例子,通过python抓取全世界所有的学校以及学院的数据,并存为xml文件.数据源是人人网. 因为刚学习python,写的代码 ...
 - web scraper 抓取网页数据的几个常见问题
		
如果你想抓取数据,又懒得写代码了,可以试试 web scraper 抓取数据. 相关文章: 最简单的数据抓取教程,人人都用得上 web scraper 进阶教程,人人都用得上 如果你在使用 web s ...
 - 【iOS】正則表達式抓取网页数据制作小词典
		
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/xn4545945/article/details/37684127 应用程序不一定要自己去提供数据. ...
 - PHP网络爬虫实践:抓取百度搜索结果,并分析数据结构
		
百度的搜索引擎有反爬虫机制,我先直接用guzzle试试水.代码如下: <?php /** * Created by Benjiemin * Date: 2020/3/5 * Time: 14:5 ...
 - 使用HtmlAgilityPack批量抓取网页数据
		
原文:使用HtmlAgilityPack批量抓取网页数据 相关软件点击下载登录的处理.因为有些网页数据需要登陆后才能提取.这里要使用ieHTTPHeaders来提取登录时的提交信息.抓取网页 Htm ...
 
随机推荐
- Linux内核中ioremap映射的透彻理解
			
几乎每一种外设都是通过读写设备上的寄存器来进行的,通常包括控制寄存器.状态寄存器和数据寄存器三大类,外设的寄存器通常被连续地编址.根据CPU体系结构的不同,CPU对IO端口的编址方式有两种: (1)I ...
 - Oracle 查询字段在什么表
			
-- 查询字段在什么表 select * from all_tab_cols t where t.column_name='ABC'; -- 查询字段在什么表并且 判断是否是主键 select * f ...
 - undefined reference to `pthread_create'问题解决
			
在编译pthread有关的程序时,出现undefined reference to `pthread_create'这样的错误. 问题原因: pthread 库不是 Linux 系统默认的库,连接时需 ...
 - C# 中解决页面刷新后字体等变大问题
			
来源:http://blog.csdn.net/wcsjsdn/article/details/5109605 我们在.net开发中时常会遇到一个问题,那就是,当点击某个按钮后,调用js语句,当点击& ...
 - WIN8 下 Hyper-V和Vmware Workstation
			
1 管理员身份运行命令提示符 cmd bcdedit /copy {current} /d “Windows Without Hyper-V 2 记下 { } 中的代码 bcdedit /set {X ...
 - Nginx下10个安全问题提示
			
Nginx是当今最流行的Web服务器之一.它为世界上7%的web流量提供服务而且正在以惊人的速度增长.它是个让人惊奇的服务器,我愿意部署它 下面是一个常见安全陷阱和解决方案的列表,它可以辅助来确保你的 ...
 - Java迷题:等于,还是不等于?
			
等于还是不等于? 看来看下面的一段代码: public static void main(final String[] args) { Integer a = new Integer(100); In ...
 - mac 安装lua并配置Subline Text2 的lua开发环境
			
1 .下载相应的lua安装包 方法 一 Mointain Lion - Lua 5.2.1 Lion - Lua 5.2.1 Snow Leopard - Lua 5.2.1 Lua 将默认安装到 / ...
 - DevExpress GridControl 部分用法
			
1.GridControl赋值:this.GridControl1.DataSouce=dt; 2.GridContro总合计及分组合计: 常规总合计直接RunDesigner-Group Summa ...
 - Oracle表变化趋势追踪记录
			
#DBA_HIST_SEG_STAT可以看出对象的使用趋势,构造如下SQL查询出每个时间段内数据库对象的增长量,其中DB_BLOCK_CHANGES_DELTA为块个数 select c.SNAP_I ...