选择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去掉字符串中重复字符的方法
Feb 27 Python
Python 抓取动态网页内容方案详解
Dec 25 Python
如何使用Python 打印各种三角形
Jun 28 Python
Python 通过截图匹配原图中的位置(opencv)实例
Aug 27 Python
Django使用中间件解决前后端同源策略问题
Sep 02 Python
python3连接kafka模块pykafka生产者简单封装代码
Dec 23 Python
Python中sys模块功能与用法实例详解
Feb 26 Python
Python Socketserver实现FTP文件上传下载代码实例
Mar 27 Python
详解用Python调用百度地图正/逆地理编码API
Jul 02 Python
如何把python项目部署到linux服务器
Aug 26 Python
Python内置函数及功能简介汇总
Oct 13 Python
python 利用openpyxl读取Excel表格中指定的行或列教程
Feb 06 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
模拟xcopy的函数
2006/10/09 PHP
Session的工作方式
2006/10/09 PHP
Apache中php.ini的设置方法
2013/02/28 PHP
php汉字转拼音的示例
2014/02/27 PHP
smarty学习笔记之常见代码段用法总结
2016/03/19 PHP
非集成环境的php运行环境(Apache配置、Mysql)搭建安装图文教程
2016/04/12 PHP
PHP迭代与递归实现无限级分类
2017/08/28 PHP
thinkphp5修改view到根目录实例方法
2019/07/02 PHP
document.all与WEB标准
2020/05/13 Javascript
区分JS中的undefined,null,"",0和false
2007/03/08 Javascript
javascript 打印页面代码
2009/03/24 Javascript
一个简单的javascript类定义例子
2009/09/12 Javascript
JavaScript 学习笔记(九)call和apply方法
2010/01/11 Javascript
HTML5+Canvas调用手机拍照功能实现图片上传(上)
2017/04/21 Javascript
通过命令行生成vue项目框架的方法
2017/07/12 Javascript
Bootstrap Table快速完美搭建后台管理系统
2017/09/20 Javascript
Vue3为什么这么快
2020/09/23 Javascript
浅谈Vue使用Cascader级联选择器数据回显中的坑
2020/10/31 Javascript
[43:26]完美世界DOTA2联赛PWL S2 Forest vs Rebirth 第二场 11.20
2020/11/23 DOTA
Python的Tornado框架实现图片上传及图片大小修改功能
2016/06/30 Python
python sys.argv[]用法实例详解
2018/05/25 Python
对dataframe数据之间求补集的实例详解
2019/01/30 Python
django celery redis使用具体实践
2019/04/08 Python
Python实现FTP文件传输的实例
2019/07/07 Python
python实现自动化报表功能(Oracle/plsql/Excel/多线程)
2019/12/02 Python
使用python修改文件并立即写回到原始位置操作(inplace读写)
2020/06/28 Python
使用npy转image图像并保存的实例
2020/07/01 Python
Keras实现DenseNet结构操作
2020/07/06 Python
python爬虫请求头设置代码
2020/07/28 Python
关于python中remove的一些坑小结
2021/01/04 Python
BISSELL官网:北美吸尘器第一品牌
2019/03/14 全球购物
家长给幼儿园的表扬信
2014/01/09 职场文书
《一件运动衫》教学反思
2014/02/19 职场文书
俄语专业职业生涯规划
2014/02/26 职场文书
2019年特色火锅店的创业计划书模板
2019/08/28 职场文书
详解SQL报错盲注
2022/07/23 SQL Server