选择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 相关文章推荐
Java Web开发过程中登陆模块的验证码的实现方式总结
May 25 Python
非递归的输出1-N的全排列实例(推荐)
Apr 11 Python
Python3实现抓取javascript动态生成的html网页功能示例
Aug 22 Python
Python使用xlwt模块操作Excel的方法详解
Mar 27 Python
Python多重继承的方法解析执行顺序实例分析
May 26 Python
详解python Todo清单实战
Nov 01 Python
在Python中Dataframe通过print输出多行时显示省略号的实例
Dec 22 Python
python多线程同步之文件读写控制
Feb 25 Python
Python Collatz序列实现过程解析
Oct 12 Python
实例讲解Python 迭代器与生成器
Jul 08 Python
python中watchdog文件监控与检测上传功能
Oct 30 Python
Python中Permission denied的解决方案
Apr 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
Mysql数据库操作类( 1127版,提供源码下载 )
2010/12/02 PHP
PHP PDOStatement::errorCode讲解
2019/01/31 PHP
laravel框架路由分组,中间件,命名空间,子域名,路由前缀实例分析
2020/02/18 PHP
jQuery 获取、设置HTML或TEXT内容的两种方法
2014/05/23 Javascript
2014年50个程序员最适用的免费JQuery插件
2014/12/15 Javascript
在javascript中随机数 math random如何生成指定范围数值的随机数
2015/10/21 Javascript
jquery实现的判断倒计时是否结束代码
2016/02/05 Javascript
Bootstrap图片轮播组件Carousel使用方法详解
2016/10/20 Javascript
jQuery实现文字自动横移
2017/01/08 Javascript
微信小程序 下拉菜单简单实例
2017/04/13 Javascript
Vue分页组件实例代码
2017/04/17 Javascript
bootstrap paginator分页前后台用法示例
2017/06/17 Javascript
vue.js实现的经典计算器/科学计算器功能示例
2018/07/11 Javascript
layui 上传图片 返回图片地址的方法
2019/09/26 Javascript
微信小程序实现时间戳格式转换
2020/07/20 Javascript
Vue和React有哪些区别
2020/09/12 Javascript
[02:02:38]VG vs Mineski Supermajor 败者组 BO3 第一场 6.6
2018/06/07 DOTA
python字符串连接方式汇总
2014/08/21 Python
利用Python学习RabbitMQ消息队列
2015/11/30 Python
Python Sqlite3以字典形式返回查询结果的实现方法
2016/10/03 Python
老生常谈python的私有公有属性(必看篇)
2017/06/09 Python
python装饰器深入学习
2018/04/06 Python
Python的多维空数组赋值方法
2018/04/13 Python
Python Web程序搭建简单的Web服务器
2019/07/31 Python
python os.fork() 循环输出方法
2019/08/08 Python
Python 音频生成器的实现示例
2019/12/24 Python
python应用Axes3D绘图(批量梯度下降算法)
2020/03/25 Python
如何搭建pytorch环境的方法步骤
2020/05/06 Python
什么是组件架构
2016/05/15 面试题
工作失职检讨书范文
2014/01/16 职场文书
维修工先进事迹
2014/05/29 职场文书
中学生的1000字检讨书
2014/10/11 职场文书
中班下学期个人总结
2015/02/12 职场文书
通知范文怎么写
2015/04/16 职场文书
活着观后感
2015/06/03 职场文书
从QQtabBar看css命名规范BEM的详细介绍
2021/08/07 HTML / CSS