网络爬虫-使用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 ...
随机推荐
- ★★★.NET 在meta标签中使用表达式设置页面的关键字
在aspx文件中 给meta标签的属性复制是不能直接使用 表达式的 错误的写法: <meta name="keywords" content="<%=news ...
- MVC开发Markdown编辑器(1)
MVC markdown MVC开发Markdown编辑器(1) 前言 安装 解析 结束语 前言 想在近段时间通过mvc开发个人博客,编辑器希望是markdown风格的,这样写文字会很方便.首先先解决 ...
- MySQL连接语法
http://www.cnblogs.com/hanzhaoxin/p/3590642.html 内连接:INNER JOIN 内连接为 两个表中必须都同时满足条件 内连接,即最常见的等值连接自然连 ...
- win2003以isapi的方式配置php+mysql环境(安装了shopEX)
一.准备相关组件 mysql-installer-community-5.5.29.0.zip php-5.2.17-Win32-VC6-x86 ZendOptimizer-3.3.3-Windows ...
- 记一次动态调用WebService
这次的使用参考博客园中的ID是 生命不息,折腾不止 http://www.cnblogs.com/leolion/p/4757320.html ,感谢分享 博客园让自己慢慢的成长,少不了这些无私奉献 ...
- PHPExcel上传sae遇到: -1:fail to get xml content
在用PHPExcel1.8.0来处理excel时,本地测试时好使的,但是要把代码部署到SAE,在上传代码的时候就会遇到这个问题. 部署代码中遇到问题: -1:fail to get xml conte ...
- 使用JavaScript获取Request中参数的值
本人很少写博客,有不正确的地方还希望大家多多指导. 假设现在有一个URL,如下. http://www.jacky.com/?id=1101&name=jacky 如何通过JS访问到id和na ...
- "/Date(1405056837780)/" 时间转换
//往往json传过来的时间都是"/Date(1405056837780)/" //转换需要的方法 String.prototype.ToString = function (fo ...
- Java应用架构的演化之路
Java应用架构的演化之路 当我们架设一个系统的时候通常需要考虑到如何与其他系统交互,所以我们首先需要知道各种系统之间是如何交互的,使用何种技术实现. 1. 不同系统不同语言之间的交互 现 在我们常见 ...
- 关于在javascript之中的时间格式;
如何获取当前日期: function CurentTime() { var now = new Date(); var year = now.getFullYear(); //年 var month ...