全国服务热线: +QQ996934
最新公告:
seo培训学习,企业站seo实战培训,培训seo教学课程——实战为主,理论为辅,诚信不变,力保双赢...
SEO培训service
SEO联系Contact us
地址:
中国CHINA
邮箱:
996934@qq.com
电话:
+QQ996934
传真:
+QQ996934
培训seo学习   当前位置:首页 > SEO资讯 > 培训seo学习
Python爬虫开发(一)零基础入门发布时间:2019-11-25

  那么本系列文章旨在普及爬虫技术,当然不是那种直接拿来爬虫框架来说明的。在本系列文章中,笔者尽力从简到难,简明地介绍爬虫的各种要素,怎么样快速编写对自己有用的代码。但是对读者有一定小小的要求:看得懂python代码,然后自己能动手实践一些,除此之外,还要对html元素有一定的了解。当然爬虫的文章在网上很容易找到,但是精致,系统地讲解的文章还是比较少,笔者在本文和今后的文章将介绍关于爬虫的各种各样的知识:大致上,本文的写作顺序是单机爬虫到分布式爬虫,功能实现到整体设计,从微观到宏观。如果有读者想找一些爬虫的入门书籍来看,我推荐《web scraping with python》,这本书是英文版目前没有中文译本,但是网上有爱好者在翻译,有兴趣的读者可以了解一下。 Htmllib(sgmllib),这个模块是非常古老的一个模块,偏底层,实际就是简单解析html文档而已,不支持搜索标签,容错性也比较差,这里指的提醒的是,如果传入的html文档没有正确结束的话,这个模块是不会解析的,直到正确的数据传入或者说强行关闭。 Smgllib这个库是htmllib的底层,但是也可以提供一个对html文本的解析方案,具体的使用方法是: 3. 通过自定义的类的对象的.feed(data)把要解析的数据传入解析器,然后自定义的方法自动生效。短短十几行代码,最简单的单页面爬虫就完成了,以下是输出的效果。我们可以看到标签开始和结束都被标记了。然后同时打印出了每一个参数。下面这个小例子在标签开始的时候检查标签中的attrs属性,解析出所有的参数的href属性,知道的读者都知道这基本是被一个爬虫的必经之路。seo培训学习 但是笔者并不计划就用这个方法来把我们的问题处理完全。因为我们有更优雅的解决方案。 1. 导入beatifulsoup库 :from bs4 import BeautifulSoup tags_a soup.findAll(name "a",attrs {href:repile("^https?://")}) 这一段与sgmllib的第二短代码相同功能,但写起来就更加的优雅。然后还引入了正则表达式,稍微过滤下链接的表达式,过滤掉了JavaScript字样,显然看起来简炼多了: UserWarning: No parser was explicitlyspecified, so Im using the best available HTML parser for this system("html.parser"). This usually isnt a problem, but if you run thiscode on another system, or in a different virtual environment, it may use adifferent parser and behave differently. To get rid of this warning, change this: BeautifulSoup([your markup],"html.parser") 上面的内容是说:没有特别指明解析器,bs4使用了它认为最好的解析器html.parser,这一般不会出问题,但是如果你在不同的环境下运行,可能解析器是不一样的。要移除这个warning可以修改你的beautifulsoup选项改成BeautifulSoup(data, "html.parser") url与uri其实是一个东西,如果但是我们更多的不提uri,那么我们来说一下关于url的处理:如果说像我们一开始那样做的话,企业站seo实战培训我们手动,或者通过正则去分析每一个url,我们要考虑url的各种结构,比如下面这些例子:我们大概就是要处理这么多的不同形式的url,这些都是在网页上非常有可能出现的url,那么,那么我们怎么判断这些的合法性呢?先以//分开,左边时协议 :,右边到第一个/是域名,域名后面时路径,?后面时参数,#后面是锚点。这么分析来的话写代码判断应该不是一个特别困难的事情,但是我们并没有必要每次都去写代码解决这个问题啊,培训seo教学课程毕竟我们在使用python,这些事情并不需要自己来做,其实我个人觉得这个要得益于python强大的模块:urlparser,这个模块就是把我们上面的url分析思路做了实现,用法也是pythonic:在urlparser返回的对象中我们可以直接以索引的方式拿到每一个参数的值。那么我们这里就有索引表了:如果scheme和netloc都同时为空的话,该url可能是当前url path 如果scheme为空但是netloc不为空的话,不一定不合法,要具体分析,一般情况下是http 如果只存在fragment或者query的话,该url为当前的url query[ fragment] 那么根据上面的规则,我们基本可以把无关的url或者不是url排除掉,或者恢复完整的url 本章中我们一起探究了一个简单爬虫的实现,然后稍微讨论了一下如何处理页面的url。相信读者读完本文的时候已经有了一定的对爬虫的基础认识,但是要知道,只了解到这种程度还不能说了解爬虫,这只是冰山一角。Lucid发布集显优化方案 通…