选择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中asyncore的用法实例
Sep 29 Python
Win7下搭建python开发环境图文教程(安装Python、pip、解释器)
May 17 Python
PyQt5 QSerialPort子线程操作的实现
Apr 21 Python
python 多线程将大文件分开下载后在合并的实例
Nov 09 Python
python中使用 xlwt 操作excel的常见方法与问题
Jan 13 Python
浅析Windows 嵌入python解释器的过程
Jul 26 Python
浅谈python图片处理Image和skimage的区别
Aug 04 Python
基于python 微信小程序之获取已存在模板消息列表
Aug 05 Python
python处理excel绘制雷达图
Oct 18 Python
python手写均值滤波
Feb 19 Python
详解pycharm配置python解释器的问题
Oct 15 Python
python文件与路径操作神器 pathlib
Apr 01 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判断网页是否gzip压缩
2013/06/25 PHP
php实现单笔转账到支付宝功能
2018/10/09 PHP
javascript下判断一个对象是否具有指定名称的属性的的代码
2010/01/11 Javascript
纯CSS打造的导航菜单(附jquery版)
2010/08/07 Javascript
javascript跟随滚动效果插件代码(javascript Follow Plugin)
2013/08/03 Javascript
Javascript 实现的数独解题算法网页实例
2013/10/15 Javascript
js中opener与parent的区别详细解析
2014/01/14 Javascript
用js设置下拉框为只读的小技巧
2014/04/10 Javascript
关于Vue.js一些问题和思考学习笔记(1)
2016/12/02 Javascript
浅谈 vue 中的 watcher
2017/12/04 Javascript
浅谈webpack对样式的处理
2018/01/05 Javascript
element ui 对话框el-dialog关闭事件详解
2018/02/26 Javascript
JavaScript深拷贝和浅拷贝概念与用法实例分析
2018/06/07 Javascript
JS实现百度网盘任意文件强制下载功能
2018/08/31 Javascript
JS闭包原理与应用经典示例
2018/12/20 Javascript
javascript判断一个变量是数组还是对象
2019/04/10 Javascript
JS利用prototype给类添加方法操作详解
2019/06/21 Javascript
NUXT SSR初级入门笔记(小结)
2019/12/16 Javascript
Python统计列表中的重复项出现的次数的方法
2014/08/18 Python
python读取TXT到数组及列表去重后按原来顺序排序的方法
2015/06/26 Python
举例讲解Python中的迭代器、生成器与列表解析用法
2016/03/20 Python
Django URL传递参数的方法总结
2016/08/28 Python
python创建列表和向列表添加元素的实现方法
2017/12/25 Python
python实现黑客字幕雨效果
2018/06/21 Python
python 实现检验33品种数据是否是正态分布
2019/12/09 Python
使用Python爬虫库BeautifulSoup遍历文档树并对标签进行操作详解
2020/01/25 Python
python如何通过twisted搭建socket服务
2020/02/03 Python
Python如何用filter函数筛选数据
2020/03/05 Python
求职信内容考虑哪几点
2013/10/05 职场文书
给校长的建议书
2014/03/12 职场文书
2014年电话销售工作总结
2014/12/01 职场文书
幼儿园中秋节活动总结
2015/03/23 职场文书
歼十出击观后感
2015/06/11 职场文书
参观监狱警示教育心得体会
2016/01/15 职场文书
《红领巾真好》教学反思
2016/02/16 职场文书
餐饮行业关注的9大营销策略
2019/08/26 职场文书