python爬虫

系统 1569 0

python爬虫1

《1》什么是爬虫网络爬虫?
网络爬虫(又被称为网页蜘蛛,网络机器人), 是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。

《2》爬虫的基本原理:
我们把互联网比喻为一张大网,网络爬虫我们想象为网上的蜘蛛,网页与网页之间的连接我们理解为节点,爬虫就相当于是访问网页,获取网页的信息,又通过节点可以爬取另一个网站,然后不停的通过一个个节点即访问一个个网页,这样网站的数据就可以被我们获取下来了。

《3》爬虫的分类:网络爬虫可分为 通用爬虫 聚焦爬虫 两种

1 通用爬虫 :通用网络爬虫 是 捜索引擎抓取系统(Baidu、Google、Yahoo等)的重要组成部分。主要目的是将互联网上的网页下载到本地,形成一个互联网内容的镜像备份。
2 聚焦爬虫 :聚焦爬虫,是"面向特定主题需求"的一种网络爬虫程序,它与通用搜索引擎爬虫的区别在于:聚焦爬虫在实施网页抓取时会对内容进行处理筛选,尽量保证只抓取与需求相关的网页信息。

urllib库

三个方面:

request: 它是最基本的HTTP请求模块,可以用来模拟发送请求,就像在浏览器中输入网址,然后敲击回车键一样,使用的时候只需要给库方法传入相关的URL和相关的参数即可.

error: 异常处理模块,如果出现请求错误,我们可以使用这个模块来捕获异常,然后进行重试或者其他操作,保证程序不会意外终止.

parse: 这是一个工具模块,提供了许多url的处理方法,比如拆分,解析,合并等等.

参数序列化:

1 parse_qs() 将url编码格式的参数反序列化为字典类型
2 quote() 可以将中文转换为URL编码格式
3 unquote: 可以将URL编码进行解码
4 urljoin() 传递一个基础链接,根据基础链接可以将某一个不完整的链接拼接为一个完整链接
5 urlparse() 实现URL的识别和分段
6 urlunparse() 可以实现URL的构造

正则表达式

实际上爬虫一共就四个主要步骤:

            
              * 明确目标 (要知道你准备在哪个范围或者网站去搜索)
* 爬 (将所有的网站的内容全部爬下来)
* 取 (去掉对我们没用处的数据)
* 处理数据(按照我们想要的方式存储和使用)

            
          

常用的正则匹配规则:
单字符撇匹配

            
              * \d : 匹配数字0-9
* \D: 匹配非数字 [^\d] [^0-9]
* \w: 匹配单词字符[a-zA-Z0-9_]
* \W: 匹配非单词字符 [^\w]
* \s: 匹配空白字符 (空格、\t....)
* \S: 匹配非空白字符 [^\s]
* . 匹配除了换行符'\n'之外的任意字符

            
          

多字符匹配(贪婪:尽可能多的匹配)
* 匹配*前的正则表达式,任意次数
? 匹配?前的正则表达式,0次或1次
+ 匹配+前的正则表达式,至少一次
{n,m} 匹配{n,m}前的正则表达式, n到m次
{n} 匹配{n}前的正则表达式, n次

非贪婪匹配 (非贪婪匹配:尽可能少的匹配)
*?
??
+?

其他:
== | 或:匹配左边和右边的正则表达式之一==
== () 分组==
^ 匹配字符串开头
== $ 匹配字符串结尾==

re 模块

            
              1. compile 方法: 将正则表达式的字符串形式编译为一个 Pattern 对象
2. match 方法:从起始位置开始匹配符合规则的字符串,单次匹配,匹配成功,立即返回Match对象,未匹配成功则返回None
3. search 方法:从整个字符串中匹配符合规则的字符串,单次匹配,匹配成功,立即返回Match对象,未匹配成功则返回None
4. findall 方法:匹配所有合规则的字符串,匹配到的字符串放到一个列表中,未匹配成功返回空列表
5. finditer 方法:匹配所有合规则的字符串,匹配到的字符串放到一个列表中,匹配成功返回
6. split 方法:根据正则匹配规则分割字符串,返回分割后的一个列表
7. sub 方法:替换匹配成功的指定位置字符串

            
          

XPath选择器

<1>什么是XPath?

  • XPath (XML Path Language) 是一门在 XML 文档中查找信息的语言,可用来在 XML 文档中对元素和属性进行遍历。

<2>XPath最常用的路径表达式:

  • /从根节点选取。
  • //从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。
  • .选取当前节点。
  • …选取当前节点的父节点。
  • @选取属性。
  • bookstore选取 bookstore 元素的所有子节点。
  • /bookstore选取根元素 bookstore。注释:假如路径起始于正斜杠( / ),则此路径始终代表到某元素的绝对路径!
  • bookstore/book选取属于 bookstore 的子元素的所有 book 元素。
  • //book选取所有 book 子元素,而不管它们在文档中的位置。
  • bookstore//book选择属于 bookstore 元素的后代的所有 book 元素,而不管它们位于 bookstore 之下的什么位置。
  • //@lang选取名为 lang 的所有属性。
  • /bookstore/*选取 bookstore 元素的所有子元素。
  • //*选取文档中的所有元素。html/node()/meta/@*选择html下面任意节点下的meta节点的所有属性
  • //title[@*]选取所有带有属性的 title 元素。

python爬虫_第1张图片

CSS 选择器:BeautifulSoup4

  • 注:和 lxml 一样,Beautiful Soup 也是python的一个HTML/XML的解析器,用它可以方便的从网页中提取数据。
  • BeautifulSoup 用来解析 HTML 比较简单,API非常人性化,支持CSS选择器、Python标准库中的HTML解析器,也支持 lxml 的 XML解析器。

官方文档:http://beautifulsoup.readthedocs.io/zh_CN/v4.4.0


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论