选择Python写网络爬虫的优势和理由


Posted in Python onJuly 07, 2019

什么是网络爬虫?

网络爬虫是一个自动提取网页的程序,它为搜索引擎从万维网上下载网页,是搜索引擎的重要组成。传统爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满足系统的一定停止条件

爬虫有什么用?

  • 做为通用搜索引擎网页收集器。(google,baidu)
  • 做垂直搜索引擎.
  • 科学研究:在线人类行为,在线社群演化,人类动力学研究,计量社会学,复杂网络,数据挖掘,等领域的实证研究都需要大量数据,网络爬虫是收集相关数据的利器。
  • 偷窥,hacking,发垃圾邮件……

爬虫是搜索引擎的第一步也是最容易的一步

选择Python写网络爬虫的优势和理由

• 网页搜集

• 建立索引

• 查询排序

用什么语言写爬虫?

C,C++。高效率,快速,适合通用搜索引擎做全网爬取。缺点,开发慢,写起来又臭又长,例如:天网搜索源代码。
脚本语言:Perl, Python, Java, Ruby。简单,易学,良好的文本处理能方便网页内容的细致提取,但效率往往不高,适合对少量网站的聚焦爬取

C#?(貌似信息管理的人比较喜欢的语言)

为什么最终选择Python?

  • 跨平台,对Linux和windows都有不错的支持。
  • 科学计算,数值拟合:Numpy,Scipy
  • 可视化:2d:Matplotlib(做图很漂亮), 3d: Mayavi2
  • 复杂网络:Networkx
  • 统计:与R语言接口:Rpy
  • 交互式终端
  • 网站的快速开发?

一个简单的Python爬虫

import urllib
import urllib.request

def loadPage(url,filename):
 """
 作用:根据url发送请求,获取html数据;
 :param url:
 :return:
 """
 request=urllib.request.Request(url)
 html1= urllib.request.urlopen(request).read()
 return html1.decode('utf-8')

def writePage(html,filename):
 """
 作用将html写入本地

 :param html: 服务器相应的文件内容
 :return:
 """
 with open(filename,'w') as f:
  f.write(html)
 print('-'*30)
def tiebaSpider(url,beginPage,endPage):
 """
 作用贴吧爬虫调度器,负责处理每一个页面url;
 :param url:
 :param beginPage:
 :param endPage:
 :return:
 """
 for page in range(beginPage,endPage+1):
  pn=(page - 1)*50
  fullurl=url+"&pn="+str(pn)
  print(fullurl)
  filename='第'+str(page)+'页.html'
  html= loadPage(url,filename)

  writePage(html,filename)



if __name__=="__main__":
 kw=input('请输入你要需要爬取的贴吧名:')
 beginPage=int(input('请输入起始页'))
 endPage=int(input('请输入结束页'))
 url='https://tieba.baidu.com/f?'
 kw1={'kw':kw}
 key = urllib.parse.urlencode(kw1)
 fullurl=url+key
 tiebaSpider(fullurl,beginPage,endPage)

以上就是关于为什么Python写网络爬虫的全部理由和知识点,感谢大家的阅读和对三水点靠木的支持。

Python 相关文章推荐
python进阶教程之文本文件的读取和写入
Aug 29 Python
Windows下搭建python开发环境详细步骤
Jul 20 Python
搭建Python的Django框架环境并建立和运行第一个App的教程
Jul 02 Python
详解python上传文件和字符到PHP服务器
Nov 24 Python
Python多继承顺序实例分析
May 26 Python
tensorflow 获取变量&打印权值的实例讲解
Jun 14 Python
对python中的控制条件、循环和跳出详解
Jun 24 Python
Python imageio读取视频并进行编解码详解
Dec 10 Python
Python基础之高级变量类型实例详解
Jan 03 Python
python实现同一局域网下传输图片
Mar 20 Python
详解python with 上下文管理器
Sep 02 Python
使用python绘制横竖条形图
Apr 21 Python
python和c语言的主要区别总结
Jul 07 #Python
详解将Pandas中的DataFrame类型转换成Numpy中array类型的三种方法
Jul 06 #Python
pandas进行时间数据的转换和计算时间差并提取年月日
Jul 06 #Python
python中时间、日期、时间戳的转换的实现方法
Jul 06 #Python
pandas 时间格式转换的实现
Jul 06 #Python
pandas中的series数据类型详解
Jul 06 #Python
pandas.DataFrame的pivot()和unstack()实现行转列
Jul 06 #Python
You might like
PHP 和 MySQL 基础教程(四)
2006/10/09 PHP
3种平台下安装php4经验点滴
2006/10/09 PHP
对Session和Cookie的区分与解释
2007/03/16 PHP
WordPress中获取页面链接和标题的相关PHP函数用法解析
2015/12/17 PHP
实例讲解php数据访问
2016/05/09 PHP
基于jquery的模态div层弹出效果
2010/08/21 Javascript
精心挑选的15款优秀jQuery 本特效插件和教程
2012/08/06 Javascript
js中split函数的使用方法说明
2013/12/26 Javascript
jquery选择器大全 全面详解jquery选择器
2014/03/06 Javascript
jquery trigger伪造a标签的click事件取代window.open方法
2014/06/23 Javascript
JQuery判断radio是否选中并获取选中值的示例代码
2014/10/17 Javascript
JavaScript动态提示输入框输入字数的方法
2015/07/27 Javascript
javascript实现在指定元素中垂直水平居中
2015/09/13 Javascript
详解JavaScript中的4种类型识别方法
2015/09/14 Javascript
JS简单封装的图片无缝滚动效果示例【测试可用】
2017/03/22 Javascript
Bootstrap Table使用整理(二)
2017/06/09 Javascript
Express使用html模板的详细代码
2017/09/18 Javascript
Angular表格神器ui-grid应用详解
2017/09/29 Javascript
Vue入门之数量加减运算操作示例
2018/12/11 Javascript
JSON.stringify()方法讲解
2019/01/31 Javascript
巧妙运用v-model实现父子组件传值的方法示例
2019/04/07 Javascript
JS实现纸牌发牌动画
2021/01/19 Javascript
[02:02]DOTA2英雄基础教程 斯拉达
2013/12/11 DOTA
列举Python中吸引人的一些特性
2015/04/09 Python
python通过Windows下远程控制Linux系统
2018/06/20 Python
Python通过for循环理解迭代器和生成器实例详解
2019/02/16 Python
python英语单词测试小程序代码实例
2019/09/09 Python
纯CSS3实现自定义Tooltip边框涂鸦风格的教程
2014/11/05 HTML / CSS
苏格兰销售女装、男装和童装的连锁店:M&Co
2018/03/16 全球购物
Burt’s Bees英国官网:世界领先的天然个人护理品牌
2020/08/17 全球购物
小学防溺水制度
2014/01/29 职场文书
《燕子》教学反思
2014/02/18 职场文书
新员工试用期自我鉴定
2014/04/17 职场文书
英语分层教学实施方案
2014/06/15 职场文书
2016最新离婚协议书范本及程序
2016/03/18 职场文书
Java基础之线程锁相关知识总结
2021/06/30 Java/Android