鱼C论坛

 找回密码
 立即注册
查看: 2656|回复: 6

[技术交流] python爬虫部分 知识点补充、复习--------《零基础入门学习python》

[复制链接]
发表于 2016-4-21 19:43:21 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 101℃太阳 于 2016-4-21 19:44 编辑

自己在一个人的时候一定要有一个规划,不然时间会过得非常快。!!!别问为什么————我是一个月前就计划写这篇文章的


导论:
本篇主要对 小甲鱼一带而过的内容进行深刻解读,会有部分内容与甲鱼的视频内容重复,适合已经跟着视频做完一遍的同学进行复习使用,如果视频还没看完,请乖乖看视频。Python版本3+


为什么选择python写爬虫:
爬虫不一定是只有python才能,JAVA,C++都可以。但为什么市面上大多是python的爬虫呢?因为小甲鱼写的python视频啊 ← ←(大雾)。因为python 写起来轻便且比较严谨。最重要的:流行库又非常多!.所以我们用python去写。
弱化针对计算机运行速度的优化, 强化为程序员容易思考容易编写 而改进的语言,我们为什么不用?而且我觉得在目前硬件对开发影响不太大的环境下python在编写速度开发效率上胜过其他语言(并不是想引战)


抓取页面信息
小甲鱼的视频,照葫芦画瓢,我想最后大家应该都可以自己“写”一个抓取妹子图的脚本吧,但是他的原理是什么,每个关键词的用法你是否都搞清楚了?照葫芦画瓢,只能开发出相似的脚本,理解为什么要这样做,才可以真正举一反三

回忆一下,抓取页面用什么?
对,用urllib。urllib.request是一个包。urllib 是由
1. request(用来打开读取URL)
2. error    (解决由request报错产生的问题)
3. parse    (用来解码url的)
4. robotparse  ( 用来解析 爬虫协议(robots.txt)的,一般网站通过Robots协议告诉baidu啊这些搜索引擎 哪些是可以抓的哪些不可以)
相关文档在python的帮助页面可以搜索到,我知道你们懒← ←  在下面贴好了文档,可以进去看下。
Urllib Python官方文档
好了,既然你打开了官方文档,我们就开始读文档了。
点进 urllib.request ,
标题就说了
The urllib.request module defines functions and classes which help in opening URLs @#$%^&*(#$%^&*(....
管他呢,往下看,会发现首先介绍的是urlopen函数,读完。
然后写一份读后感交给太阳(大雾)

urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False, context=None)
这个urlopen会返回一个 http.client.HTTPResponse 对象。这些对象又对应好多用法,比如小甲鱼用到的read(),getheader()等等方法
具体的用法呢,小甲鱼没有给出,在这里我找到了官方的文档。
HTTPResponse对象用法文档
太阳知道你们不会细看...
直接上例子
>>> import urllib.request
>>> url = 'http://www.fishc.com/'
>>> fishc = urllib.request.urlopen(url)
>>>
>>> fishc.geturl()
'http://www.fishc.com/'
>>> type(fishc)
<class 'http.client.HTTPResponse'>    #这里得到的就是对象的类型
>>>fishc.info()
<http.client.HTTPMessage object at 0x03137B50>
>>>fishc.getheaders()  # 会获得网站的headers ,太多不写了.
>>> fishc.getcode()
200                                #不错,记忆力挺好的,200是正常的意思.

那我们继续,会打开网页,接下来就是如何修改你的浏览属性了。也就是Data信息。
Data一定是一个字典(文档中有说)!!!!
Data信息的添加,参考 小甲鱼 有道词典翻译的例子。
对于data信息 太阳测试过,I  对应的事你需要翻译的 字符串。这个是必要的,还有一个必须要添加的是‘doctype’对应的是'json'
也就是告诉有道,我是json编码的。其余的我删掉后并不影响运行,应该是默认的都可以,这点有待考证。@小甲鱼  @~风介~
之后你会发现一个细节,小甲鱼将data 进行 encode然后覆盖。
我们将编码前后的Data打印出来对比 就清楚了
请输入需要翻译的内容:i love fishc
{'i': 'i love fishc', 'doctype': 'json'}        #编码前打印
b'i=i+love+fishc&doctype=json'        #编码后打印
翻译结果:我爱fishc
看样子是翻译成了一个二进制的编码形式.
如何隐藏和使用代理,小甲鱼讲的很详细 还引入Time模块,
在这里不做赘述。换言之,照着做就行了(我没读文档 ← ←)


正则表达式
让自己的爬虫更具有一般性!
首先,我们知道,python爬虫爬回来的东西 是一个字符串b'#$%^&*',解码之后还是字符串。
而我们爬虫要做的就是 从这些字符串当中找出我们想要的有规律的数据。而这些都是正则表达式才能做到的。
这也就是小甲鱼为什么要讲正则表达式的原因。
正则表达式的功能很强大,需要慢慢去熟练,才能巧妙运用。但是对于目前的爬虫来说,找出url还有ip就好啦← ←
课后作业有没有好好做?!



《未完待续》

评分

参与人数 2荣誉 +3 鱼币 +10 收起 理由
Minhal + 5 感谢楼主无私奉献!
~风介~ + 3 + 5 支持楼主!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-4-21 20:19:50 | 显示全部楼层
支持。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-4-21 23:52:57 | 显示全部楼层
做爬虫方面的笔记可是需要很大精力的哦~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-4-22 22:19:05 | 显示全部楼层
~风介~ 发表于 2016-4-21 23:52
做爬虫方面的笔记可是需要很大精力的哦~

介介、我贴的 文档的链接 为啥不能点呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-4-23 16:55:02 | 显示全部楼层
101℃太阳 发表于 2016-4-22 22:19
介介、我贴的 文档的链接 为啥不能点呢?

怎么个贴法?附件链接?图片链接?超链接?按理说应该是论坛编辑的大boss才对呀。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-8-26 17:20:54 | 显示全部楼层
佩服
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-9-11 20:11:34 | 显示全部楼层
感谢分享!计划用1个月的业余时间看完小甲鱼的视频,然后学做爬虫,学做博客
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-29 00:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表