选择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中使用CasperJS获取JS渲染生成的HTML内容的教程
Apr 09 Python
Python3搜索及替换文件中文本的方法
May 22 Python
Python的Django框架中TEMPLATES项的设置教程
May 29 Python
Python判断直线和矩形是否相交的方法
Jul 14 Python
详解Python 实现元胞自动机中的生命游戏(Game of life)
Jan 27 Python
Python selenium抓取微博内容的示例代码
May 17 Python
对python指数、幂数拟合curve_fit详解
Dec 29 Python
Django保护敏感信息的方法示例
May 09 Python
Transpose 数组行列转置的限制方式
Feb 11 Python
django rest framework serializers序列化实例
May 13 Python
浅谈pymysql查询语句中带有in时传递参数的问题
Jun 05 Python
Python中Qslider控件实操详解
Feb 20 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代码简化
2010/02/08 PHP
php实现单链表的实例代码
2013/03/22 PHP
php几个预定义变量$_SERVER用法小结
2014/11/07 PHP
PHP simplexml_load_file()函数讲解
2019/02/03 PHP
PHP实现一个限制实例化次数的类示例
2019/09/16 PHP
Laravel 集成微信用户登录和绑定的实现
2019/12/27 PHP
用方法封装javascript的new操作符(一)
2010/12/25 Javascript
webapp框架AngularUI的demo改造之路
2014/12/21 Javascript
JS实现网页Div层Clone拖拽效果
2015/09/26 Javascript
JavaScript笔记之数据属性和存储器属性
2016/03/31 Javascript
jQuery制作网页版选项卡
2016/07/28 Javascript
Angular.js中$apply()和$digest()的深入理解
2016/10/13 Javascript
Vue的Flux框架之Vuex状态管理器
2017/07/30 Javascript
JavaScript实现图片切换效果
2017/08/12 Javascript
js禁止浏览器页面后退功能的实例(推荐)
2017/09/01 Javascript
深入理解Angular4订阅(Subscribe)与取消
2017/11/22 Javascript
vue-cli脚手架打包静态资源请求出错的原因与解决
2019/06/06 Javascript
vue使用lodop打印控件实现浏览器兼容打印的方法
2021/02/07 Vue.js
R vs. Python 数据分析中谁与争锋?
2017/10/18 Python
python使用threading获取线程函数返回值的实现方法
2017/11/15 Python
Python if语句知识点用法总结
2018/06/10 Python
python 3.7.0 安装配置方法图文教程
2018/08/27 Python
python实现决策树分类(2)
2018/08/30 Python
python导入模块交叉引用的方法
2019/01/19 Python
python使用turtle绘制国际象棋棋盘
2019/05/23 Python
Django重设Admin密码过程解析
2020/02/10 Python
python中yield的用法详解
2021/01/13 Python
“型”走纽约上东区:Sam Edelman
2017/04/02 全球购物
蔻驰法国官网:COACH法国
2018/11/14 全球购物
手工制作的意大利礼服鞋:Ace Marks
2018/12/15 全球购物
美国时尚大码女装购物网站:Avenue
2019/05/24 全球购物
什么是用户模式(User Mode)与内核模式(Kernel Mode) ?
2015/09/07 面试题
会计试用期自我评价怎么写
2014/09/18 职场文书
学习杨善洲同志先进事迹心得体会
2016/01/23 职场文书
[有人@你]你有一封绿色倡议书,请查收!
2019/07/18 职场文书
Python通过loop.run_in_executor执行同步代码 同步变为异步
2022/04/11 Python