为什么说python适合写爬虫


Posted in Python onJune 11, 2020

抓取网页本身的接口

相比与其他静态编程语言,如java,c#,C++,python抓取网页文档的接口更简洁;相比其他动态脚本语言,如perl,shell,python的urllib2包提供了较为完整的访问网页文档的API。(当然ruby也是很好的选择)

此外,抓取网页有时候需要模拟浏览器的行为,很多网站对于生硬的爬虫抓取都是封杀的。这是我们需要模拟user agent的行为构造合适的请求,譬如模拟用户登陆、模拟session/cookie的存储和设置。在python里都有非常优秀的第三方包帮你搞定,如Requests,mechanize

网页抓取后的处理

抓取的网页通常需要处理,比如过滤html标签,提取文本等。python的beautifulsoap提供了简洁的文档处理功能,能用极短的代码完成大部分文档的处理。

其实以上功能很多语言和工具都能做,但是用python能够干得最快,最干净。Life is short, u need python.

冲最后一句‘Lifeisshort,uneedpython',立马在当当上买了本python的书!以前就膜拜过python大牛,一直想学都扯于各种借口迟迟没有开始。。

py用在linux上很强大,语言挺简单的。

  • NO.1 快速开发(唯一能和python比开发效率的语言只有rudy)语言简洁,没那么多技巧,所以读起来很清楚容易。
  • NO.2跨平台(由于python的开源,他比java更能体现"一次编写到处运行"
  • NO.3解释性( 无须编译,直接运行/调试代码)
  • NO.4构架选择太多(GUI构架方面 主要的就有 wxPython, tkInter, PyGtk, PyQt 。

知识点扩展:

用python写爬虫相关的实例:

# coding:utf-8
import urllib

domain = 'http://www.liaoxuefeng.com'   #廖雪峰的域名
path = r'C:\Users\cyhhao2013\Desktop\temp\\' #html要保存的路径

# 一个html的头文件
input = open(r'C:\Users\cyhhao2013\Desktop\0.html', 'r')
head = input.read()

# 打开python教程主界面
f = urllib.urlopen("http://www.需要爬取的网址.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000")
home = f.read()
f.close()

# 替换所有空格回车(这样容易好获取url)
geturl = home.replace("\n", "")
geturl = geturl.replace(" ", "")

# 得到包含url的字符串
list = geturl.split(r'em;"><ahref="')[1:]

# 强迫症犯了,一定要把第一个页面也加进去才完美
list.insert(0, '/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000">')

# 开始遍历url List
for li in list:
 url = li.split(r'">')[0]
 url = domain + url    #拼凑url
 print url
 f = urllib.urlopen(url)
 html = f.read()

 # 获得title为了写文件名
 title = html.split("<title>")[1]
 title = title.split(" - 廖雪峰的官方网站</title>")[0]

 # 要转一下码,不然加到路径里就悲剧了
 title = title.decode('utf-8').replace("/", " ")

 # 截取正文
 html = html.split(r'<!-- block main -->')[1]
 html = html.split(r'<h4>您的支持是作者写作最大的动力!</h4>')[0]
 html = html.replace(r'src="', 'src="' + domain)

 # 加上头和尾组成完整的html
 html = head + html+"</body></html>"

 # 输出文件
 output = open(path + "%d" % list.index(li) + title + '.html', 'w')
 output.write(html)
 output.close()

到此这篇关于为什么说python适合写爬虫的文章就介绍到这了,更多相关为什么用python写爬虫内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python正则获取、过滤或者替换HTML标签的方法
Jan 28 Python
浅谈python类属性的访问、设置和删除方法
Jul 25 Python
python文件名和文件路径操作实例
Sep 29 Python
python登录并爬取淘宝信息代码示例
Dec 09 Python
详解Python 装饰器执行顺序迷思
Aug 08 Python
Python json模块dumps、loads操作示例
Sep 06 Python
python3发送邮件需要经过代理服务器的示例代码
Jul 25 Python
Python 实现的 Google 批量翻译功能
Aug 26 Python
Python 实现大整数乘法算法的示例代码
Sep 17 Python
解决Python字典查找报Keyerror的问题
May 26 Python
Python基于百度AI实现抓取表情包
Jun 27 Python
Python实现批量自动整理文件
Mar 16 Python
python新手学习使用库
Jun 11 #Python
keras实现多种分类网络的方式
Jun 11 #Python
python的help函数如何使用
Jun 11 #Python
新手学python应该下哪个版本
Jun 11 #Python
python开发前景如何
Jun 11 #Python
python编写softmax函数、交叉熵函数实例
Jun 11 #Python
python能开发游戏吗
Jun 11 #Python
You might like
消息持续发送的完整例子
2006/10/09 PHP
深入理解require与require_once与include以及include_once的区别
2013/06/05 PHP
php选择排序法实现数组排序实例分析
2015/02/16 PHP
ajax调用返回php接口返回json数据的方法(必看篇)
2017/05/05 PHP
js 取时间差去掉周六周日实现代码
2012/12/25 Javascript
JQuery中关于jquery.js与jquery.min.js的比较探讨
2013/05/15 Javascript
JavaScript实现九九乘法表的简单实例
2016/06/07 Javascript
JS 调用微信扫一扫功能
2016/12/22 Javascript
javascript prototype原型详解(比较基础)
2016/12/26 Javascript
基于jQuery实现一个marquee无缝滚动的插件
2017/03/09 Javascript
Thinkjs3新手入门之添加一个新的页面
2017/12/06 Javascript
关于vue中watch检测到不到对象属性的变化的解决方法
2018/02/08 Javascript
vue头部导航动态点击处理方法
2018/11/02 Javascript
浅谈对于“不用setInterval,用setTimeout”的理解
2019/08/28 Javascript
小程序使用watch监听数据变化的方法详解
2019/09/20 Javascript
jQuery实现中奖播报功能(让文本滚动起来) 简单设置数值即可
2020/03/20 jQuery
基于ajax及jQuery实现局部刷新过程解析
2020/09/12 jQuery
[03:55]显微镜下的DOTA2特别篇——430灰烬之灵神级操作
2014/06/24 DOTA
[01:00:59]VP VS VG Supermajor小组赛胜者组第二轮 BO3第二场 6.2
2018/06/03 DOTA
Python中遍历字典过程中更改元素导致异常的解决方法
2016/05/12 Python
Python探索之pLSA实现代码
2017/10/25 Python
python3 pandas 读取MySQL数据和插入的实例
2018/04/20 Python
Python使用matplotlib模块绘制图像并设置标题与坐标轴等信息示例
2018/05/04 Python
Python实现矩阵相乘的三种方法小结
2018/07/26 Python
flask中过滤器的使用详解
2018/08/01 Python
Python 使用PyQt5 完成选择文件或目录的对话框方法
2019/06/27 Python
Python 的 f-string 可以连接字符串与数字的原因解析
2021/02/20 Python
HTML5梦幻之旅——炫丽的流星雨效果实现过程
2013/08/06 HTML / CSS
墨西哥巴士车票在线购买:ClickBus
2018/03/27 全球购物
仓管员岗位责任制
2014/02/19 职场文书
小学生田径运动会广播稿
2014/09/11 职场文书
ThinkPHP5和ThinkPHP6的区别
2021/03/31 PHP
python绘图subplots函数使用模板的示例代码
2021/04/30 Python
关于Python中*args和**kwargs的深入理解
2021/08/07 Python
AJAX实现指定部分页面刷新效果
2021/10/16 Javascript
HTML静态页面获取url参数和UserAgent的实现
2022/08/05 HTML / CSS