程序:

  目标url

  内容提取

  表现形式

为什么:

  大数据——数据膨胀,信息太多了,不知道哪些信息适合你,例如谷歌搜索引擎。

  垂直行业搜索——某一个行业的搜索,与搜索引擎最大的区别:搜索引擎是告诉你哪些网页适合你,而垂直搜索引擎是告诉你哪些数据适合你。例如:去哪儿网,告诉你哪些机票适合你;链家网,告诉你哪些房子适合你。

学什么:

  

  get && show 就是爬虫

  装库

  pip install beautifulsoup4

  pip install requests

  pip install selenium

  beautifulsoup4:把html看成一个树

   

  1. #!/usr/bin/env python
  2. # coding: utf-8
  3. #copyRight by heibanke
  4.  
  5. import urllib
  6. from bs4 import BeautifulSoup
  7. import re
  8.  
  9. html = urllib.urlopen('http://baike.baidu.com/view/284853.htm')
  10. #通过urllib.urlopen来获取这个网址的内容
  11. bs_obj = BeautifulSoup(html,"html.parser")
  12. #通过beautifulSoup来实例化一个对象
  13.  
  14. #findAll(tag, attributes, recursive, text, limit, keywords)
  15. #find(tag, attributes, recursive, text, keywords)
  16. #recursive=False表示只搜索直接儿子,否则搜索整个子树,默认为True。
  17. #findAll(“a”)
  18. #findAll(“a”, href=“”)
  19. #findAll(“div”, class=“”)
  20. #findAll(“button”, id=“”)
  21.  
  22. #a_list = bs_obj.findAll("a")
  23. a_list = bs_obj.findAll("a",href=re.compile("\.baidu\.com\w?"))#正则表达式处理
  24. #这里的a是html中的一个标签
  25. #<a> 标签定义超链接,用于从一张页面链接到另一张页面。
  26. #<a> 元素最重要的属性是 href 属性,它指示链接的目标
  27. print a_list
  28.  
  29. for aa in a_list:
  30. if not aa.find("img"):#图片的链接没有用
  31. if aa.attrs.get('href'):
  32. print aa.text, aa.attrs['href']

  这不过是入门而已,我们如果想更深入的了解,还要学会beautifulsoup4这个库,可以通过帮助文档、博客啥的进行学习。

  关卡1:循环访问url

  http://www.heibanke.com/lesson/crawler_ex00/

  

  我就奇怪了,代码是黑板课老师那边提供的,可是运行的时候就会出错,不知道为什么。

  

  1. # -*- coding: utf-8 -*-
  2. # CopyRight by heibanke
  3.  
  4. import urllib
  5. from bs4 import BeautifulSoup
  6. import re
  7.  
  8. url='http://www.heibanke.com/lesson/crawler_ex00/'
  9. number=['']
  10. loops = 0
  11.  
  12. while True:
  13. content = urllib.urlopen(url+number[0])
  14.  
  15. bs_obj = BeautifulSoup(content,"html.parser")
  16. tag_number = bs_obj.find("h3")
  17.  
  18. number= re.findall(r'\d+',tag_number.get_text())
  19.  
  20. if not number or loops>100:
  21. break
  22. else:
  23. print number[0]
  24.  
  25. loops+=1
  26.  
  27. print bs_obj.text

  

  

  关卡2:

  有用户名,然后破解密码,密码是30内数字

  需要:post数据,requests

    表单提交

    http://www.heibanke.com/lesson/crawler_ex01/

  requests库:

    ·支持各种request类型

      HTTP request type:GET,POST,PUT(相当于新建),DELETE,HEAD and OPTIONS

    ·支持各种POST,如上传文件,

    ·支持自定义header(有些网站会检测是否是机器人(爬虫)在访问)

    ·支持json数据解析

    ·支持访问Cookies

    ·支持重定向地址

    ·支持设置timeout——有的网址访问时间过长,可以自动设置一个timeout

    

    第三关:

      登录验证

      CSRF跨站请求伪造

      CSRF是防止恶意攻击的

      Selenium 硒

    一个高级库,模拟浏览器登录的功能

    名字由来:在之前有一个公司Mercury 汞,被惠普收购,这个是对企业做一些测试工具。而Selenium可以降低汞的毒性,相当于它的克星。

    ·模拟用户浏览器操作,Selenium IDE可录制测试动作——不用写代码

    ·Functional Test,自动测试

    ·支持多种语言,Python,Java,ruby,c#,php

    ·webdriver支持多种浏览器,最方便是Firefox

python爬虫——黑板客老师课程学习的更多相关文章

  1. python类——黑板客老师课程学习

    1.基本语法 class class_name(base_class):  base_class是它继承的父类 class_var def methods(self,args): statements ...

  2. python画图—黑板客老师课程学习

    1.介绍 把每个图都看作一个对象,图中的每一个部分也是对象.——所有的一切都是对象. 工具——ipython notebook 是python里边用的最多的2D&3D的会图库,开源免费库,使用 ...

  3. python变量——黑板客老师课程学习

    1.和C++.Java的区别: 动态类型:不需要声明a的类型. a=34 type(a) <type  ‘int’> 一切皆对象: 4 2.数字: 自动转换类型:a=34  A=3.14 ...

  4. python计算机视觉——黑板客老师课程学习

    机器学习的一个应用方向,是如何让机器去理解图像.包括对图像里物体的识别,跟踪和测量. 能做什么——无人驾驶汽车.人脸识别.车牌识别手势识别(游戏方向) PIL静态的库 OpenCV 动态的库 impo ...

  5. 线性代数和numpy——黑板客老师课程学习

    一.代数是什么 代数->数的抽象表示->向量空间(线性空间) 线代->线性代数 关系: 向量空间之间和内部转换是通过线性变换. 实数——一维空间的点 复数——二维空间的点 如果两个向 ...

  6. python语句表达式——黑板客老师课程学习

    1.赋值 多重赋值: a,b=1,2 a,b=’beijing’,’sh’ a,b=’bj’ a,b=(1,2) a,b=[1,2] …… 2.输入输出 输入: raw_input()   原始输入 ...

  7. pyhton函数——黑板客老师课程学习

    1.基本语法 语法: def func_name (arguments)  定义 statements return x,y x,y=func_name(para)   调用 作用域: 可以给内置的函 ...

  8. "做中学"之“极客时间”课程学习指导

    目录 "做中学"之"极客时间"课程学习指导 所有课程都可以选的课程 Java程序设计 移动平台开发 网络攻防实践 信息安全系统设计基础 信息安全专业导论 极客时 ...

  9. python爬虫 | 一条高效的学习路径

    数据是创造和决策的原材料,高质量的数据都价值不菲.而利用爬虫,我们可以获取大量的价值数据,经分析可以发挥巨大的价值,比如: 豆瓣.知乎:爬取优质答案,筛选出各话题下热门内容,探索用户的舆论导向. 淘宝 ...

随机推荐

  1. JAVA 取得当前目录的路径/Servlet/class/文件路径/web路径/url地址

    在写java程序时不可避免要获取文件的路径...总结一下,遗漏的随时补上 1.可以在servlet的init方法里 String path = getServletContext().getRealP ...

  2. mysql重复记录的查询删除方法

    1.查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断select * from peoplewhere peopleId in (select   peopleId from  ...

  3. onAttachedToWindow () 和 onDetachedFromWindow () (转)

    原文地址:http://blog.sina.com.cn/s/blog_74c22b2101012urv.html

  4. Windows平台分布式网站系统应用(转)

    概述 最近.NET的世界开始闹腾了,微软官方终于加入到了对.NET跨平台的支持,并且在不久的将来,我们在VS里面写的代码可能就可以通过Mono直接在Linux和Mac上运行.那么大家(开发者和企业)为 ...

  5. 基于WebDriver&TestNG 实现自己的Annotation @TakeScreenshotOnFailure

    相信用过Selenium WebDriver 的朋友都应该知道如何使用WebDriver API实现Take Screenshot的功能. 在这篇文章里,我主要来介绍对failed tests实现 t ...

  6. Python体验(07)-图形界面之菜单

    顺序安装以下程序: python解释器:https://www.python.org/downloads/ wxPython图形界面框架包:http://www.wxpython.org/ pycha ...

  7. OpenCV2.3.1在Win7+VS2010下的配置过程(转)

    转自:http://blog.csdn.net/mygis2005/article/details/10472717 这篇博客很好的解决了我遇到的问题,所以转到自己的博客里,方便以后进行查阅. 1.  ...

  8. vs中使用openGL

    一.准备工作 创建Empty Project,为了能够使用OpenGL的库函数,需要把相关的库连接到项目中: 1.首先添加库的路径 如上,可以把需要添加的include.lib放到一起比较方便管理 这 ...

  9. CSS3学习笔记1-选择器和新增属性

    前言:之前自学了一些关于CSS3的知识,在学习过程中也遇到过坑,不过总算磕磕绊绊的学习完了关于CSS3的相关知识,于是最近把之前的笔记和代码整理了一下,也算是一个对CSS3知识的回顾复习吧,也希望能够 ...

  10. php 判断文件或目录是否存在

    判断文件或目录是否存在有自带的函数 file_exists:文件是否存在 $file = "check.txt"; if(file_exists($file)) {     ech ...