选择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 相关文章推荐
pygame实现弹力球及其变速效果
Jul 03 Python
Python编程之字符串模板(Template)用法实例分析
Jul 22 Python
python实现外卖信息管理系统
Jan 11 Python
Tensorflow之Saver的用法详解
Apr 23 Python
Python实现的爬取网易动态评论操作示例
Jun 06 Python
Flask框架web开发之零基础入门
Dec 10 Python
Python 转换文本编码实现解析
Aug 27 Python
用python实现英文字母和相应序数转换的方法
Sep 18 Python
python 使用while写猜年龄小游戏过程解析
Oct 07 Python
python实现学生信息管理系统(精简版)
Nov 27 Python
Pytorch之扩充tensor的操作
Mar 04 Python
Python获取江苏疫情实时数据及爬虫分析
Aug 02 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比较两个绝对时间的大小
2014/01/31 PHP
php时间戳转换的示例
2014/03/31 PHP
php将日期格式转换成xx天前的格式
2015/04/16 PHP
PHP SPL标准库之接口(Interface)详解
2015/05/11 PHP
Laravel 手动开关 Eloquent 修改器的操作方法
2019/12/30 PHP
PHP读取文件,解决中文乱码UTF-8的方法分析
2020/01/22 PHP
jquery.lazyload  实现图片延迟加载jquery插件
2010/02/06 Javascript
jQuery 借助插件Lavalamp实现导航条动态美化效果
2013/09/27 Javascript
解析img图片没找到onerror事件 Stack overflow at line: 0
2013/12/23 Javascript
js实现向右横向滑出的二级菜单效果
2015/08/27 Javascript
详解Bootstrap的aria-label和aria-labelledby应用
2016/01/04 Javascript
JavaScript模拟push
2016/03/06 Javascript
jQuery中iframe的操作(点击按钮新增窗口)
2016/04/20 Javascript
jQuery siblings()用法实例详解
2016/04/26 Javascript
artDialog+plupload实现多文件上传
2016/07/19 Javascript
利用JavaScript判断浏览器类型及版本
2016/08/23 Javascript
js实现可旋转的立方体模型
2016/10/16 Javascript
js 中获取制定的cook信息实现方法
2016/11/19 Javascript
jquery自定义插件结合baiduTemplate.js实现异步刷新(附源码)
2016/12/22 Javascript
jQuery轻松实现无缝轮播效果
2017/03/22 jQuery
JavaScript Canvas绘制圆形时钟效果
2020/08/20 Javascript
js学习总结之DOM2兼容处理顺序问题的解决方法
2017/07/27 Javascript
关于jquery layui弹出层的使用方法
2018/04/21 jQuery
Vue中的v-for指令不起效果的解决方法
2018/09/27 Javascript
在layui中使用form表单监听ajax异步验证注册的实例
2019/09/03 Javascript
简述Vue中容易被忽视的知识点
2019/12/09 Javascript
Python模拟登录12306的方法
2014/12/30 Python
Python中你应该知道的一些内置函数
2017/03/31 Python
详解Python中 sys.argv[]的用法简明解释
2017/12/20 Python
Python打包方法Pyinstaller的使用
2018/10/09 Python
python+opencv打开摄像头,保存视频、拍照功能的实现方法
2019/01/08 Python
StubHub美国:购买或出售您的门票
2019/07/09 全球购物
Geekbuying波兰:购买中国电子产品
2019/10/20 全球购物
自我检讨报告
2015/01/28 职场文书
新党员入党决心书
2015/09/22 职场文书
详解Apache SkyWalking 告警配置指南
2021/04/22 Servers