选择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新手们容易犯的几个错误总结
Apr 01 Python
Python numpy.array()生成相同元素数组的示例
Nov 12 Python
python按照多个条件排序的方法
Feb 08 Python
python快排算法详解
Mar 04 Python
python sort、sort_index方法代码实例
Mar 28 Python
python的re模块使用方法详解
Jul 26 Python
python获取指定日期范围内的每一天,每个月,每季度的方法
Aug 08 Python
解析python的局部变量和全局变量
Aug 15 Python
IntelliJ 中配置 Anaconda的过程图解
Jun 01 Python
Python将字典转换为XML的方法
Aug 01 Python
手把手教你怎么用Python实现zip文件密码的破解
May 27 Python
python四个坐标点对图片区域最小外接矩形进行裁剪
Jun 04 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配置php-fpm启动参数及配置详解
2013/11/04 PHP
如何让thinkphp在模型中自动完成session赋值小教程
2014/09/05 PHP
Mac下快速搭建PHP开发环境步骤详解
2019/05/05 PHP
js checkbox(复选框) 使用集锦
2009/04/28 Javascript
浏览器窗口加载和大小改变事件示例
2014/02/27 Javascript
js中各种类型的变量在if条件中是true还是false
2014/07/16 Javascript
深入分析下javascript中的[]()+!
2015/07/07 Javascript
javascript中 try catch用法
2015/08/16 Javascript
JavaScript如何实现在文本框(密码框)输入提示语
2015/12/25 Javascript
基于JavaScript实现图片点击弹出窗口而不是保存
2016/02/06 Javascript
JavaScript数据存储 Cookie篇
2016/07/02 Javascript
Vuejs第十篇之vuejs父子组件通信
2016/09/06 Javascript
vue使用vue-cli快速创建工程
2017/07/28 Javascript
js封装成插件的步骤方法
2017/09/11 Javascript
JavaScript实现二叉树的先序、中序及后序遍历方法详解
2017/10/26 Javascript
Vue使用vue-area-linkage实现地址三级联动效果的示例
2018/06/27 Javascript
jQuery AJAX 方法success()后台传来的4种数据详解
2018/08/08 jQuery
javascript设计模式 ? 代理模式原理与用法实例分析
2020/04/16 Javascript
vue项目里面引用svg文件并给svg里面的元素赋值
2020/08/17 Javascript
Python实现XML文件解析的示例代码
2018/02/05 Python
浅谈Python traceback的优雅处理
2018/08/31 Python
使用python对文件中的数值进行累加的实例
2018/11/28 Python
啥是佩奇?使用Python自动绘画小猪佩奇的代码实例
2019/02/20 Python
python 字典的打印实现
2019/09/26 Python
Python hashlib模块实例使用详解
2019/12/24 Python
pytorch标签转onehot形式实例
2020/01/02 Python
pytorch:实现简单的GAN示例(MNIST数据集)
2020/01/10 Python
浅谈Python里面None True False之间的区别
2020/07/09 Python
基于HTML5的WebGL经典3D虚拟机房漫游动画
2017/11/15 HTML / CSS
澳大利亚新奇小玩意网站:Yellow Octopus
2017/12/28 全球购物
个人实用的自我评价范文
2013/11/23 职场文书
应用艺术毕业生的自我评价
2013/12/04 职场文书
幼儿园教师奖惩制度
2014/02/01 职场文书
2014年帮扶工作总结
2014/11/26 职场文书
护士2015年终工作总结
2015/04/29 职场文书
Spring Cloud 中@FeignClient注解中的contextId属性详解
2021/09/25 Java/Android