选择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中requests模块的使用方法
Apr 08 Python
Python中的index()方法使用教程
May 18 Python
python之PyMongo使用总结
May 26 Python
Python3调用微信企业号API发送文本消息代码示例
Nov 10 Python
python读取和保存图片5种方法对比
Sep 12 Python
Tesserocr库的正确安装方式
Oct 19 Python
python 实现交换两个列表元素的位置示例
Jun 26 Python
Python3.5以上版本lxml导入etree报错的解决方案
Jun 26 Python
在python中画正态分布图像的实例
Jul 08 Python
python识别验证码图片实例详解
Feb 17 Python
Python Tricks 使用 pywinrm 远程控制 Windows 主机的方法
Jul 21 Python
python的列表生成式,生成器和generator对象你了解吗
Mar 16 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
成本8450万,票房仅2亿,口碑两极分化,又一部DC电影扑街了
2020/04/09 欧美动漫
PHP CURL使用详解
2019/03/21 PHP
javascript下过滤数组重复值的代码
2007/09/10 Javascript
javascript 解析后的xml对象的读取方法细解
2009/07/25 Javascript
Javascript面向对象之四 继承
2011/02/08 Javascript
很好用的js日历算法详细代码
2013/03/07 Javascript
判断日期是否能跨月查询的js代码
2014/07/25 Javascript
javascript复制粘贴与clipboardData的使用
2014/10/16 Javascript
解析Node.js异常处理中domain模块的使用方法
2016/02/16 Javascript
Vue实现动态显示textarea剩余字数
2017/05/22 Javascript
javascript checkbox/radio onchange不能兼容ie8处理办法
2017/06/13 Javascript
解决bootstrap中下拉菜单点击后不关闭的问题
2018/08/10 Javascript
Element中的Cascader(级联列表)动态加载省\市\区数据的方法
2019/03/27 Javascript
layui的表单验证支持ajax判断用户名是否重复的实例
2019/09/06 Javascript
jquery弹窗时禁止body滚动条滚动的例子
2019/09/21 jQuery
Webpack5正式发布,有哪些新特性
2020/10/12 Javascript
python中for语句简单遍历数据的方法
2015/05/07 Python
利用python在大量数据文件下删除某一行的例子
2019/08/21 Python
Python dict和defaultdict使用实例解析
2020/03/12 Python
python3 logging日志封装实例
2020/04/08 Python
Python调用飞书发送消息的示例
2020/11/10 Python
CSS3为背景图设置遮罩并解决遮罩样式继承问题
2020/06/22 HTML / CSS
canvas实现按住鼠标移动绘制出轨迹的示例代码
2018/02/05 HTML / CSS
世界首屈一指的钓鱼用品商店:TackleDirect
2016/07/26 全球购物
shell的种类有哪些
2015/04/15 面试题
机电一体化自荐信
2013/12/10 职场文书
打架检讨书400字
2014/01/17 职场文书
艺人经纪人岗位职责
2014/04/15 职场文书
党政领导班子民主生活会整改措施
2014/09/18 职场文书
继承公证书格式
2015/01/26 职场文书
龙潭大峡谷导游词
2015/02/10 职场文书
2016党员三严三实心得体会
2016/01/15 职场文书
MySQL系列之十 MySQL事务隔离实现并发控制
2021/07/02 MySQL
Python 中 Shutil 模块详情
2021/11/11 Python
分享node.js实现简单登录注册的具体代码
2022/04/26 NodeJs
css中:last-child不生效的解决方法
2022/08/05 HTML / CSS