选择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简单程序读取串口信息的方法
Mar 13 Python
Saltstack快速入门简单汇总
Mar 01 Python
Python和Perl绘制中国北京跑步地图的方法
Mar 03 Python
Windows下安装python2和python3多版本教程
Mar 30 Python
定制FileField中的上传文件名称实例
Aug 23 Python
对pandas中两种数据类型Series和DataFrame的区别详解
Nov 12 Python
python批量获取html内body内容的实例
Jan 02 Python
Python功能点实现:函数级/代码块级计时器
Jan 02 Python
python 串口读取+存储+输出处理实例
Dec 26 Python
python使用html2text库实现从HTML转markdown的方法详解
Feb 21 Python
PyQT5 实现快捷键复制表格数据的方法示例
Jun 19 Python
Python Selenium操作Cookie的实例方法
Feb 28 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
Laravel 5框架学习之表单
2015/04/08 PHP
laravel5创建service provider和facade的方法详解
2016/07/26 PHP
php实现自定义中奖项数和概率的抽奖函数示例
2017/05/26 PHP
css3实现背景模糊的三种方式
2021/03/09 HTML / CSS
escape、encodeURI、encodeURIComponent等方法的区别比较
2006/12/27 Javascript
JS 日期验证正则附asp日期格式化函数
2009/09/11 Javascript
jquery入门——事件机制之事件中的冒泡现象示例解释
2020/09/12 Javascript
模拟javascript中的sort排序(简单实例)
2016/08/17 Javascript
浅析JS中对函数function的理解(基础篇)
2016/10/14 Javascript
AngularJS指令与控制器之间的交互功能示例
2016/12/14 Javascript
原生js实现倒计时功能(多种格式调用)
2017/01/12 Javascript
JSON键值对序列化和反序列化解析
2017/01/24 Javascript
js仿小米手机上下滑动效果
2017/02/05 Javascript
Vue实现一个返回顶部backToTop组件
2017/07/25 Javascript
Vue组件和Route的生命周期实例详解
2018/02/10 Javascript
vue 基于element-ui 分页组件封装的实例代码
2018/12/10 Javascript
JS实现可视化音频效果的实例代码
2020/01/16 Javascript
如何手动实现一个 JavaScript 模块执行器
2020/10/16 Javascript
[59:07]海涛为你详解DOTA2新版本“贤哲秘契”
2014/11/22 DOTA
Python中的super用法详解
2015/05/28 Python
Python+Pandas 获取数据库并加入DataFrame的实例
2018/07/25 Python
python os.path模块常用方法实例详解
2018/09/16 Python
Django REST framework 视图和路由详解
2019/07/19 Python
解决python3 requests headers参数不能有中文的问题
2019/08/21 Python
python自动化unittest yaml使用过程解析
2020/02/03 Python
荷兰超市:DEEN
2018/03/14 全球购物
毕业生求职简历中的自我评价
2013/10/18 职场文书
酒店个人培训自我鉴定
2013/12/11 职场文书
早读迟到检讨书
2014/01/24 职场文书
行政人事岗位职责
2014/03/17 职场文书
优秀三好学生事迹材料
2014/08/31 职场文书
12.4法制宣传日标语
2014/10/08 职场文书
2019销售早会主持词
2019/06/27 职场文书
Pytorch 实现变量类型转换
2021/05/17 Python
oracle连接ODBC sqlserver数据源的详细步骤
2021/07/25 Oracle
正则表达式拆分url实例代码
2022/02/24 Java/Android