作家
登录

python爬虫入门基本知识

作者: 来源: 2017-04-12 13:40:46 阅读 我要评论

python爬虫入门根本常识

等等,请求琅绫擎还有一个_xsrf,这是一个什么鬼参数,其实呢这是一个防止跨站请求捏造而生成的一个随机数,可以经由过程解析https://www.zhihu.com/#signin 页面获取,这一部分我鄙人面会讲解若何HTML获取数据,如今假设我们已经拿到这个数据了,若何将用户名和暗码上岸呢?

python爬虫入门根本常识

更多关于requests的应用可以查看官方文档:

英文: http://docs.python-requests.org/en/master/

中文: http://cn.python-requests.org/zh_CN/latest/user/quickstart.html

python解析数据

因为小我在解析数据的时刻碰到过很多编码的坑,所以在持续讲解之前告诉大年夜家一些若何避免编码问题的办法。python2中有两种字符串:unicode和str,它们分别对应python3中的str和bytes。若何定义这两种类型的变量鄙人图中给大年夜家列出来了。

python爬虫入门根本常识

以python3为例讲解这两种类型的差别。python3中的str每一个字符可以存储一个英文字母、一个汉字甚至一个emoji神情,它可以经由过程特定的编码方法,例如utf-8或者gbk生成bytes,在不合的编码格局下,可能须要2-3个字符常能表示一个汉字。bytes可以指定解码格局解码生成str,如不雅指定的解码格局不匹配,就会导致乱码问题。为了避免乱码问题,最好的方法就是应用str,比及须要写入文件或者数据库的时刻,再指定写入的编码格局,用好这个准则,我们可以避免百分之九十的编码问题。

当请求的数据是json格局时,我们可以很便利的用requests反序列化返回内容,掏出感兴趣的数据。然则当HTTP返回的数据是html的时刻,我们该若何操作,就像刚才知乎上岸的例子中,若何快速大年夜html中解析想要的数据呢?

专门用来解析html的第三方库有很多,例如beautifulsoup、pyquery。小我推荐应用pyquery,因为它可以应用jquery的方法拔取元素,并且支撑xpath,今后上手scrapy会很轻易。持续膳绫擎上岸知乎的例子,上岸时须要的_xsrf实际上在 https://www.zhihu.com/#signin 页面琅绫擎,只要先请求到这个页面,然后解析出_xsrf,合营之前的上岸请求,我们就可以完全的实现用python模仿浏览器上岸知乎了。

写爬虫的第一步就是分析想要的数据浏览器是经由过程什么URL拿到的,抓包也就在所不免。最好用的抓包对象当然是谷歌浏览器了,右键检查,选中收集,从新刷新页面就可以看到加载此网页所有的HTTP请求了,如不雅此链接有跳转地址,跳转之前的HTTP请求会被清掉落,所以记灯揭捉?上preserve log,尤其是上岸的时刻,一般都邑有跳转。

python爬虫入门根本常识

存储数据

python爬虫入门根本常识

应用起来是不是相当的简单,我们只要经由过程谷歌浏览器找到对应DOM元素,根据属性名就可以异常快速的┞芬到想要的数据。须要留意的是response.content和response.text,这都是返回的body正文,然则前者是bytes,后者是str,requests已经赞助我们把响应正文按照精确的编码格局进行懂得码,根据我们之前的阐述的原则,尽量应用str,所以26这个处所我用的是response.text。

这里列举了一些常用的办法,一般来讲,GET表示向办事器请求URI对应的资本,POST表示向办事器提交数据,DELETE表示删除数据,PUT表示修改数据。但这都是一种商定,没有强迫的请求,如不亚妹碰见用DELETE办法提交数据也没须要大年夜惊小怪。在实际写爬虫的过程中,我们只须要按照抓包请求构造数据即可,没有须要在意用了什么办法。

更多关于pyquery的应用可以参考官方文档: https://pythonhosted.org/pyquery/

根据数据量的不合以及数据类型的不合,数据的存储选择也很多。如不雅爬取的是图片、音频、视频等多媒体文件,直接按照文件情势存储就好了。如不雅是一些文本,数字等数据,一般有这么几种选择:

  • 输出到屏幕
  • 写入文件(txt csv)
  • 写入数据库 (mysql sqlite mongo)

如不雅数据量异常小,可以选择直接输出到屏幕(这种情况貌似也不须要爬虫),因为终端存储的数据量很少,并且因为没有持久化,封闭窗口就意味着数据损掉,不建议应用。

在数据量小且不肯意折腾数据库的情况下,可以把爬取的数据写入文件,然则这种情况不克不及随取随用,也不便利做数据分析,须要手动处理。

当数据量较多,并且须要快捷的分析数据,推荐应用数据库存储数据,大年夜型的数据库mysql, mongo功能齐备,可以分便利的进行数据分析,并且也很轻易实现分布式扩大,当你须要多过程甚至多机械运行爬虫的时刻,这些数据库可能是最好的选择。sqlite相对来说功能要少很多,python原生支撑,依附少,数据量不算太大年夜的情况下可以推敲应用。

爬虫示例

下面给出一个简单的例子,为大年夜家展示若何应用上述python库实现一个完全的爬虫。一些热点的知乎话题最多有1000条精华答复,这个例子就是爬取这些精品谜底。图示页面就是答复列表,每页有二十个谜底,最多有五十页。然则此页面没有完全的答复信息,须要经由过程显示全部对应的链接进入答复详情页才能获取完全的谜底,所以我们的爬虫策略就是经由过程答复列表找到所有精华答复链接,再经由过程答复链接获取内容。并且这些页面不须要上岸也能拜访,是以可以省去模仿上岸。


  推荐阅读

  浅析前端页面渲染机制

作为一个前端开辟,最常见的运行情况应当是浏览器吧,为了更好的经由过程浏览器把优良的产品带给用户,也为了更好的成长本身的前端职业之路,有须要懂得大年夜我们在浏览器地址栏输入网址>>>详细阅读


本文标题:python爬虫入门基本知识

地址:http://www.17bianji.com/lsqh/34754.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)