爬虫的四个主要步骤

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

什么是正则表达式

正则表达式,又称规则表达式,通常被用来检索、替换那些符合某个模式(规则)的文本。

正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。

给定一个正则表达式和另一个字符串,我们可以达到如下的目的:

  • 给定的字符串是否符合正则表达式的过滤逻辑(“匹配”);
  • 通过正则表达式,从文本字符串中获取我们想要的特定部分(“过滤”)。

正则表达式匹配规则

Python 的 re 模块

在 Python 中,我们可以使用内置的 re 模块来使用正则表达式。

有一点需要特别注意的是,正则表达式使用 对特殊字符进行转义,所以如果我们要使用原始字符串,只需加一个 r 前缀,示例:

r'chuanzhiboke\t\.\tpython'

使用正则爬去名言网的名言,只获取首页的10条数据

from urllib.request import urlopen
import redef spider_quotes():url = "http://quotes.toscrape.com"response = urlopen(url)html = response.read().decode("utf-8")#  获取 10  个  名言quotes = re.findall('<span class="text" itemprop="text">(.*)</span>',html)list_quotes = []for quote in quotes:#  strip 从两边开始搜寻,只要发现某个字符在当前这个方法的范围内,统统去掉list_quotes.append(quote.strip("“”"))# 获取 10 个名言的作者list_authors = []authors = re.findall('<small class="author" itemprop="author">(.*)</small>',html)for author in authors:list_authors.append(author)# 获取这10个名言的  标签tags = re.findall('<div class="tags">(.*?)</div>',html,re.RegexFlag.DOTALL)list_tags = []for tag in tags:temp_tags = re.findall('<a class="tag" href=".*">(.*)</a>',tag)tags_t1 = []for tag in temp_tags:tags_t1.append(tag)list_tags.append(",".join(tags_t1))# 结果汇总results = []for i in range(len(list_quotes)):results.append("\t".join([list_quotes[i],list_authors[i],list_tags[i]]))for result in results:print(result)#调取方法
spider_quotes()

BeautifulSoup4解析器

BeautifulSoup 用来解析 HTML 比较简单,API非常人性化,支持CSS选择器、Python标准库中的HTML解析器,也支持 lxml 的 XML解析器。

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

使用BeautifulSoup4获取名言网首页数据

from urllib.request import urlopen
from bs4 import BeautifulSoupurl = "http://quotes.toscrape.com"
response = urlopen(url)# 初始化一个 bs 实例
#  对应的response对象的解析器, 最常用的解析方式,就是默认的  html.parser
bs = BeautifulSoup(response, "html.parser")#  获取 10  个  名言
spans = bs.select("span.text")
list_quotes = []
for span in spans:span_text = span.textlist_quotes.append(span_text.strip("“”"))# 获取 10 个名言的作者
authors = bs.select("small")
list_authors = []
for author in authors:author_text = author.textlist_authors.append(author_text)# 获取这10个名言的  标签
divs = bs.select("div.tags")
list_tags = []
for div in divs:tag_text = div.select("a.tag")tag_list = [ tag_a.text for tag_a in tag_text]list_tags.append(",".join(tag_list))#结果汇总
results = []
for i in range(len(list_quotes)):results.append("\t".join([list_quotes[i],list_authors[i],list_tags[i]]))for result in results:print(result)

转载于:https://www.cnblogs.com/qingyunzong/p/8659730.html

Python学习之路 (五)爬虫(四)正则表示式爬去名言网相关推荐

  1. python功能性爬虫案例_Python爬虫实现使用beautifulSoup4爬取名言网功能案例

    本文实例讲述了Python爬虫实现使用beautifulSoup4爬取名言网功能.分享给大家供大家参考,具体如下: 爬取名言网top10标签对应的名言,并存储到mysql中,字段(名言,作者,标签) ...

  2. Python学习之路五

    文章目录 迭代器 高阶函数 map reduce sorted filter 推导式 列表推导式 集合推导式 字典推导式 生成器 迭代器 迭代器:能被next进行调用,并且不断返回一下值的对象. 特征 ...

  3. 爬虫实战1-多进程爬取 名言网

    import requests import re from multiprocessing import Pooldef get_html(url, header=''):''':param url ...

  4. Python学习之路9☞面向对象的程序设计

    Python学习之路9☞面向对象的程序设计 一 面向对象的程序设计的由来 见概述:http://www.cnblogs.com/linhaifeng/articles/6428835.html 二 什 ...

  5. 我的Python学习之路(一)_Mr_Ouyang

    我的Python学习之路(一)_Mr_Ouyang 笔者按: 本文从18:55开始写作,至19:38中断,又从21:12始继续,至23:22写就. 共计耗时113分钟,总字数9081字,约80.4字/ ...

  6. Python学习之路【第一篇】-Python简介和基础入门

    1.Python简介 1.1 Python是什么 相信混迹IT界的很多朋友都知道,Python是近年来最火的一个热点,没有之一.从性质上来讲它和我们熟知的C.java.php等没有什么本质的区别,也是 ...

  7. Python学习系列(五)(文件操作及其字典)

    Python学习系列(五)(文件操作及其字典) Python学习系列(四)(列表及其函数) 一.文件操作 1,读文件      在以'r'读模式打开文件以后可以调用read函数一次性将文件内容全部读出 ...

  8. python学习笔记(五)缩进

    python学习笔记(五)缩进 原作:http://www.cnblogs.com/vamei/archive/2012/05/29/2524706.html 笔记: #!/usr/bin/env p ...

  9. Python学习之路5☞文件处理

    Python学习之路5☞文件处理 一.文件处理流程 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 1 正趣果上果 2 Interesting fruit fruit 3 4 ...

最新文章

  1. [网摘学习]在Ubuntu上安装和配置OpenStack Nova之二
  2. 1、为什么使用Long时,推荐多使用valueOf方法,少使用parseLong方法
  3. N使用exus2打造企业maven仓库(三)
  4. (z) 什么是好的硬件工程师
  5. 【LeetCode】剑指 Offer 18. 删除链表的节点
  6. 兼容超大图片的处理_N年都没弄明白!PS保存的图片格式都啥意思?
  7. atitit 商业项目常用模块技术知识点 v3 qc29
  8. 打印机驱动 - HP LaserJet P1008(适用于大部分惠普打印机)
  9. linux系统自动获取ip地址,Linux系统怎么自动获取ip地址用什么命令
  10. Ubuntu安装wine
  11. NVT | 67x USB MSDC设备分析
  12. 在线CRM客户管理系统有好用的吗?这5款千万别错过!
  13. 使用反向代理给 PPA 加速
  14. 量子计算机物理装置的总称,量子到底是什么?解读量子世界以及量子的实际应用!...
  15. 【免费】如何轻松的从音乐网站下载自己喜欢的mp3音乐?
  16. Windows/Linux混合刻录之后,光盘文件不见了?
  17. 如何查看电脑上面的maven版本?
  18. 【学习笔记】Docker基础实战教程一:入门
  19. C语言实现动态数组大小
  20. 编程大实践 # python # 嵩天 # Cilay

热门文章

  1. LiteOS内核教程02 | HelloWorld
  2. Spring分布式缓存
  3. 简析强制缓存和协商缓存
  4. CSS---------定位
  5. 计算机等级证书分为几级,考试条件有哪些?
  6. Ajax 跨域难题 - 原生 JS 和 jQuery 的实现对比
  7. 23种设计模式学习文档
  8. 突然火起来的“私域流量”,怎么玩?
  9. 《童梦奇缘-梦幻般的羁绊》第八章-殇变
  10. 程序设计基本模式IPO