python爬虫

1 篇文章 0 订阅
1 篇文章 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 元素。

在这里插入图片描述

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值