1. 爬虫的选取:scrapy和requests+beautifuisoup

  scrapy是框架,而requests和beautifulsoup是库。scrapy框架是可以加如requests和beautifulsoup库的,而scrapy是基于twisted,性能是最大的优势。scrapy方便扩展,提供很多内置的功能。scrapy内置的css和xpath selector非常方便,beautifulsoup就是有点慢。

2.常见网页分类

  静态网页,动态网页、webservice

3.爬虫能做什么

  1)搜索引擎---百度、google、垂直领域搜索引擎

  2)推荐引擎---今日头条

  3)机器学习的数据样本

  4)数据分析(如金融数据分析)、舆情分析等

4.正则表达式

  1)特殊字符(^)

代码:
      import re
      """
      1)^"必须是^后面的字符"
      2) .是除了\n的任意字符
      3) *是一个限定符,用来修饰前一个字符或分组,限定匹配重复的数量为任意数量。
      """
      #”^“、”.“、”ד测试
      test_str = "zzbaby"
      reg_str = "^b.*"
      if re.match(reg_str,test_str):
        print("yes")
      else:
        print("no")

结果:

    no 

  2)特殊字符($)

代码:

    """
    1)$"表示必须有以$前面的字符结尾"
    """
    reg_str_1 = ".*y$"
    if re.match(reg_str_1,test_str):
     print("yes")
    else:
     print("no")
结果:
     yes

  3)特殊字符(?)

代码:

"""
1)?表示非贪婪模式
"""
   test_str = "zbbbbbbzzbaby"
  reg_str_2 = ".*?(z.*?z).*"#?表示从左边开始匹配遇到第一个Z就开始进入匹配第二个?表示不要贪婪太多只需要匹配遇到第二个z就结束
  if re.match(reg_str_2,test_str):
   print(re.match(reg_str_2,test_str).group(1))#表示提取第一次符合reg_str_2的字符,正则表达式是反向匹配的
  else:
   print("error")
结果:
  zbbbbbbz
4)特殊字符+
代码:
  """
  1)+是一个限定符,用来修饰前一个字符或分组,限定匹配重复的数量至少为一次数量。
  """
  reg_str_3 = "(.+.*)"#正则表达式默认是贪婪模式
  if re.match(reg_str_3,test_str):
   print(re.match(reg_str_3,test_str).group(1))#表示提取第一次符合reg_str_2的字符,正则表达式是反向匹配的
  else:
   print("error")
结果:
  zbbbbbbzzbaby
5)特殊字符{}
代码:
  """
  1){2}表示大括号里面出现的数字是前面出现的次数
  2){2,}表示大括号数值以上的次数
  3){2,5}表示2次以上5次以下   """
  reg_str_4 ="(.{2}.)"#表示出现前两个字符
  reg_str_5= "(.+b{2,})"#表示b前面要至少有一个字符后匹配2个以上的b
  reg_str_6= "(.+b{1,6})"#表示b前面要至少有一个字符后匹配1个以上的b,6个以下的b
  print(re.match(reg_str_4,test_str).group(1))#表示打印前两个字符
  print(re.match(reg_str_5,test_str).group(1))#表示两次以上的字符,由于贪婪所以会打印最长
  print(re.match(reg_str_6,test_str).group(1))#打印的是在b之前至少存在1个字符而且b出现的次数在1次以上6次以下
 结果:

    zbb
   zbbbbbb
   zbbbbbb

6)特殊字符|

代码: 

  """
  1)表示或者的意思
  """
  reg_str_7 = "(zz|zb)"#提取zz或者zb优先左边打印
  print(re.match(reg_str_7,test_str).group(1))#group中的数字代表的是括号的层数,常常用于提取子字符串 结果:
  zb
7)特殊字符[]
代码:
  """
  1)[]相当于只能输入[]中的字符
  2)[]有一种使用方法[0-9]只能输入0-9之间的数据
  3)[]还有一种使用方法[^1]表示只能输入不是1的数据
  """
  #[]的前一种使用方式
  print("请输入一个电话号码:")
  #test_str = input()
  reg_str_1 ="1[3578][0-9]{9}"#表示第二位只能输入3、5、8、7的数值,[0-9]则表示输入1-9之间的数据
  if re.match(reg_str_1,test_str):
   print(test_str)
  else:
   print("error")
  #[^]的使用方法
  print("输入一个最后不为1的电话号码:")
  test_str = input()
  reg_str_1 ="1[3578][0-9]{8}[^1]{1}"#表示第二位只能输入3、5、8、7的数值,[0-9]则表示输入1-9之间的数据,最后一位不能为1
  if re.match(reg_str_1,test_str):
   print(test_str)
  else:
   print("error")
输出:
  请输入一个电话号码:
    error
  输入一个最后不为1的电话号码:
    15837140221
    error
8)特殊字符\s
代码:
  
  """
  1)\s表示匹配一个空格
  2)\S表示只要不是空格都可以
  3)\w表示任意一个字符都可以[A-Za-z0-9_]都可以
  4)\W表示与\w相反
  """
  #\s的作用
  test_str ="你 好"#汉字
  test_str_1 ="hh aa"#英文
  reg_str_8 ="你\s好"
  reg_str_9 = "hh\saa"
  if re.match(reg_str_8,test_str):
   print(test_str)
  if re.match(reg_str_9,test_str_1):
   print(test_str_1)
  else:
   print("error")
  #\S的作用与\s的作用相反
  test_str ="hhsaa"#英文
  reg_str_10 = "hh\Saa"
  if re.match(reg_str_10,test_str):
   print(test_str)
  else:
   print("error")
  #\w的使用方式
  test_str ="hh@aa"#英文
  reg_str_11 = "hh\waa"#\w相当于[a-zA-Z0-9_]
  if re.match(reg_str_11,test_str):
   print(test_str)
  else:
   print("error")
  #\W的使用方式与\W相反
  test_str ="hh@aa"#英文
  reg_str_12 = "hh\Waa"#\W相当于[a-zA-Z0-9_]相反
  if re.match(reg_str_12,test_str):
   print(test_str)
  else:
   print("error")
输出结果:
  

  你 好
  hh aa
  hhsaa
  error
  hh@aa

9)特殊字符[\u4E00-\9FA5]

代码:
  """
  1)[\u4E00-\u9FA5]只识别汉字
  """
  test_str ="你好"#汉字
  reg_str_13 = "[\u4E00-\u9FA5]+"
  if re.match(reg_str_13,test_str):
   print(test_str)
  else:
   print("error")
运行结果:
  你好
10)特殊字符\d
代码:
  """
  1)\d代表的数字
  """
  test_str = "aaaaaa123"
  reg_str_13 = ".*(.+[2]\d).*"#提起123
  if re.match(reg_str_13,test_str):
  print(re.match(reg_str_13,test_str).group(1))
  else:
   print("error")
结果:
  123
 
 

 

 

Python爬虫之一的更多相关文章

  1. Python 爬虫模拟登陆知乎

    在之前写过一篇使用python爬虫爬取电影天堂资源的博客,重点是如何解析页面和提高爬虫的效率.由于电影天堂上的资源获取权限是所有人都一样的,所以不需要进行登录验证操作,写完那篇文章后又花了些时间研究了 ...

  2. python爬虫成长之路(一):抓取证券之星的股票数据

    获取数据是数据分析中必不可少的一部分,而网络爬虫是是获取数据的一个重要渠道之一.鉴于此,我拾起了Python这把利器,开启了网络爬虫之路. 本篇使用的版本为python3.5,意在抓取证券之星上当天所 ...

  3. python爬虫学习(7) —— 爬取你的AC代码

    上一篇文章中,我们介绍了python爬虫利器--requests,并且拿HDU做了小测试. 这篇文章,我们来爬取一下自己AC的代码. 1 确定ac代码对应的页面 如下图所示,我们一般情况可以通过该顺序 ...

  4. python爬虫学习(6) —— 神器 Requests

    Requests 是使用 Apache2 Licensed 许可证的 HTTP 库.用 Python 编写,真正的为人类着想. Python 标准库中的 urllib2 模块提供了你所需要的大多数 H ...

  5. 批量下载小说网站上的小说(python爬虫)

    随便说点什么 因为在学python,所有自然而然的就掉进了爬虫这个坑里,好吧,主要是因为我觉得爬虫比较酷,才入坑的. 想想看,你可以批量自动的采集互联网上海量的资料数据,是多么令人激动啊! 所以我就被 ...

  6. python 爬虫(二)

    python 爬虫 Advanced HTML Parsing 1. 通过属性查找标签:基本上在每一个网站上都有stylesheets,针对于不同的标签会有不同的css类于之向对应在我们看到的标签可能 ...

  7. Python 爬虫1——爬虫简述

    Python除了可以用来开发Python Web之后,其实还可以用来编写一些爬虫小工具,可能还有人不知道什么是爬虫的. 一.爬虫的定义: 爬虫——网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区 ...

  8. Python爬虫入门一之综述

    大家好哈,最近博主在学习Python,学习期间也遇到一些问题,获得了一些经验,在此将自己的学习系统地整理下来,如果大家有兴趣学习爬虫的话,可以将这些文章作为参考,也欢迎大家一共分享学习经验. Pyth ...

  9. [python]爬虫学习(一)

    要学习Python爬虫,我们要学习的共有以下几点(python2): Python基础知识 Python中urllib和urllib2库的用法 Python正则表达式 Python爬虫框架Scrapy ...

  10. python爬虫学习(1) —— 从urllib说起

    0. 前言 如果你从来没有接触过爬虫,刚开始的时候可能会有些许吃力 因为我不会从头到尾把所有知识点都说一遍,很多文章主要是记录我自己写的一些爬虫 所以建议先学习一下cuiqingcai大神的 Pyth ...

随机推荐

  1. Docker 创建 Confluence6.12.2 中文版

    目录 目录 1.介绍 1.1.什么是Confluence? 2.Confluence的官网在哪里? 3.如何下载安装? 4.对 Confluence 进行配置 4.1.设置 Confluence 4. ...

  2. dynalist 配额

    2018-8-29 dynalist 配额 提示有一个G的配额 就是使用的流量用光了.仅有1个G

  3. 二、Windows Server 2016 AD 组织单位、组、用户的创建

    简介: 组织单位简称OU,OU是(Organizational Unit)的缩写,组织单位是可以将用户.组.计算机和组织单位放入其中的容器.是可以指派组策略设置或委派管理权限的最小作用域或单元. 建立 ...

  4. 简单用数组模拟顺序栈(c++)

    **栈是一种操作受限制的线性表,太多官方的话我也不说了,我们都知道栈元素是先进后出的,它有两种存储结构,分别是顺序存储结构和链式存储结构. **今天我先记一下顺序存储结构,后面我会加上链式存储结构的. ...

  5. Linux定是调用shell脚本删除文件

    编写脚本 vi delbak.sh 代码如下: #!/bin/sh location="/home/mysql/backup/" find $location -mtime +7 ...

  6. kunbernetes-快速入门

    1.入门概述 本文以在容器云上部署一个nexus3应用为例,通过通过一步步的操作,帮助用户快速的对Kubernetes有一个快速和整体的认识.通过快速入门,可以提供如下知识内容: 在集群中部署一个容器 ...

  7. RPC是什么?

    初学微服务,一点会问RPC是什么,通常网上的资料会说,是一种协议,然后说得很复杂,一堆概念,拜托,我只是想知道RPC是什么,而不是  怎么实现怎么做. RPC就是想实现函数调用模式的网络化,A服务(微 ...

  8. day01(计算机组成,进制,内存分布,操作系统)

    本周内容: 第一天: 计算机原理 操作系统 第二天: 编程语言 python入门:环境 - 编辑器 变量 基本数据类型 学习方法: 鸡汤 - 干货 wwwh : what  | why | where ...

  9. Daily Scrum 12.20

    Member Task on 12.20 Task on 12.21 仇栋民 继续Task972 : 完成活动评分基础功能 完成Task972 : 完成活动评分基础功能 康家华 完成 Task1010 ...

  10. c# pda

    1.去除标题栏 FormBorderStyle属性设置为none 2.去除任务栏 [System.Runtime.InteropServices.DllImport("coredll.dll ...