选择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二叉树遍历的实现方法
Nov 21 Python
Python的gevent框架的入门教程
Apr 29 Python
python实现的简单抽奖系统实例
May 22 Python
Python循环语句之break与continue的用法
Oct 14 Python
Python 'takes exactly 1 argument (2 given)' Python error
Dec 13 Python
深入学习Python中的上下文管理器与else块
Aug 27 Python
JS设计模式之责任链模式实例详解
Feb 03 Python
解决pycharm工程启动卡住没反应的问题
Jan 19 Python
使用Python快速制作可视化报表的方法
Feb 03 Python
Python的3种运行方式:命令行窗口、Python解释器、IDLE的实现
Oct 10 Python
python自动生成证件号的方法示例
Jan 14 Python
Python+OpenCV实现图片中的圆形检测
Apr 07 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多文件上传类实例
2015/03/07 PHP
初识通用数据库操作类――前端easyui-datagrid,form(php)
2015/07/31 PHP
php搜索文件程序分享
2015/10/30 PHP
Dom 是什么的详细说明
2010/10/25 Javascript
jquery焦点图片切换(数字标注/手动/自动播放/横向滚动)
2013/01/24 Javascript
js文件Cookie存取值示例代码
2014/02/20 Javascript
JS中的log对象获取以及debug的写法介绍
2014/03/03 Javascript
jquery的父子兄弟节点查找示例代码
2014/03/03 Javascript
iframe里使用JavaScript控制主页转向的方法
2015/04/03 Javascript
14款经典网页图片和文字特效的jQuery插件-前端开发必备
2015/08/25 Javascript
javascript数组去重常用方法实例分析
2017/04/11 Javascript
微信小程序 Animation实现图片旋转动画示例
2018/08/22 Javascript
js针对图片加载失败的处理方法分析
2019/08/24 Javascript
JavaScript ECMA-262-3 深入解析(二):变量对象实例详解
2020/04/25 Javascript
js事件机制----捕获与冒泡机制实例分析
2020/05/22 Javascript
JavaScript实现表单验证功能
2020/12/09 Javascript
详解PyCharm安装MicroPython插件的教程
2019/06/24 Python
基于python实现雪花算法过程详解
2019/11/16 Python
python实现二分类的卡方分箱示例
2019/11/22 Python
Python-jenkins 获取job构建信息方式
2020/05/12 Python
基于Python爬虫采集天气网实时信息
2020/06/05 Python
详解使用HTML5 Canvas创建动态粒子网格动画
2016/12/14 HTML / CSS
澳大利亚牛仔裤商店:Just Jeans
2016/10/13 全球购物
建筑学推荐信
2013/11/03 职场文书
医科大学生毕业的自我评价分享
2013/11/12 职场文书
护理学毕业生求职信
2013/11/14 职场文书
幼儿园中班新学期寄语
2014/01/18 职场文书
揠苗助长教学反思
2014/02/04 职场文书
老师对学生的寄语
2014/04/09 职场文书
廉洁自律演讲稿
2014/05/22 职场文书
2015秋季幼儿园开学寄语
2015/03/25 职场文书
2015年客服工作总结范文
2015/04/02 职场文书
督导岗位职责范本
2015/04/10 职场文书
2016党员学习心得体会范文
2016/01/23 职场文书
Vue项目打包、合并及压缩优化网页响应速度
2021/07/07 Vue.js
MySQL实战记录之如何快速定位慢SQL
2022/03/23 MySQL