python爬虫——黑板客老师课程学习
程序:
目标url
内容提取
表现形式
为什么:
大数据——数据膨胀,信息太多了,不知道哪些信息适合你,例如谷歌搜索引擎。
垂直行业搜索——某一个行业的搜索,与搜索引擎最大的区别:搜索引擎是告诉你哪些网页适合你,而垂直搜索引擎是告诉你哪些数据适合你。例如:去哪儿网,告诉你哪些机票适合你;链家网,告诉你哪些房子适合你。
学什么:

get && show 就是爬虫
装库
pip install beautifulsoup4
pip install requests
pip install selenium
beautifulsoup4:把html看成一个树

#!/usr/bin/env python
# coding: utf-8
#copyRight by heibanke import urllib
from bs4 import BeautifulSoup
import re html = urllib.urlopen('http://baike.baidu.com/view/284853.htm')
#通过urllib.urlopen来获取这个网址的内容
bs_obj = BeautifulSoup(html,"html.parser")
#通过beautifulSoup来实例化一个对象 #findAll(tag, attributes, recursive, text, limit, keywords)
#find(tag, attributes, recursive, text, keywords)
#recursive=False表示只搜索直接儿子,否则搜索整个子树,默认为True。
#findAll(“a”)
#findAll(“a”, href=“”)
#findAll(“div”, class=“”)
#findAll(“button”, id=“”) #a_list = bs_obj.findAll("a")
a_list = bs_obj.findAll("a",href=re.compile("\.baidu\.com\w?"))#正则表达式处理
#这里的a是html中的一个标签
#<a> 标签定义超链接,用于从一张页面链接到另一张页面。
#<a> 元素最重要的属性是 href 属性,它指示链接的目标
print a_list for aa in a_list:
if not aa.find("img"):#图片的链接没有用
if aa.attrs.get('href'):
print aa.text, aa.attrs['href']
这不过是入门而已,我们如果想更深入的了解,还要学会beautifulsoup4这个库,可以通过帮助文档、博客啥的进行学习。
关卡1:循环访问url
http://www.heibanke.com/lesson/crawler_ex00/

我就奇怪了,代码是黑板课老师那边提供的,可是运行的时候就会出错,不知道为什么。
# -*- coding: utf-8 -*-
# CopyRight by heibanke import urllib
from bs4 import BeautifulSoup
import re url='http://www.heibanke.com/lesson/crawler_ex00/'
number=['']
loops = 0 while True:
content = urllib.urlopen(url+number[0]) bs_obj = BeautifulSoup(content,"html.parser")
tag_number = bs_obj.find("h3") number= re.findall(r'\d+',tag_number.get_text()) if not number or loops>100:
break
else:
print number[0] loops+=1 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爬虫——黑板客老师课程学习的更多相关文章
- python类——黑板客老师课程学习
1.基本语法 class class_name(base_class): base_class是它继承的父类 class_var def methods(self,args): statements ...
- python画图—黑板客老师课程学习
1.介绍 把每个图都看作一个对象,图中的每一个部分也是对象.——所有的一切都是对象. 工具——ipython notebook 是python里边用的最多的2D&3D的会图库,开源免费库,使用 ...
- python变量——黑板客老师课程学习
1.和C++.Java的区别: 动态类型:不需要声明a的类型. a=34 type(a) <type ‘int’> 一切皆对象: 4 2.数字: 自动转换类型:a=34 A=3.14 ...
- python计算机视觉——黑板客老师课程学习
机器学习的一个应用方向,是如何让机器去理解图像.包括对图像里物体的识别,跟踪和测量. 能做什么——无人驾驶汽车.人脸识别.车牌识别手势识别(游戏方向) PIL静态的库 OpenCV 动态的库 impo ...
- 线性代数和numpy——黑板客老师课程学习
一.代数是什么 代数->数的抽象表示->向量空间(线性空间) 线代->线性代数 关系: 向量空间之间和内部转换是通过线性变换. 实数——一维空间的点 复数——二维空间的点 如果两个向 ...
- python语句表达式——黑板客老师课程学习
1.赋值 多重赋值: a,b=1,2 a,b=’beijing’,’sh’ a,b=’bj’ a,b=(1,2) a,b=[1,2] …… 2.输入输出 输入: raw_input() 原始输入 ...
- pyhton函数——黑板客老师课程学习
1.基本语法 语法: def func_name (arguments) 定义 statements return x,y x,y=func_name(para) 调用 作用域: 可以给内置的函 ...
- "做中学"之“极客时间”课程学习指导
目录 "做中学"之"极客时间"课程学习指导 所有课程都可以选的课程 Java程序设计 移动平台开发 网络攻防实践 信息安全系统设计基础 信息安全专业导论 极客时 ...
- python爬虫 | 一条高效的学习路径
数据是创造和决策的原材料,高质量的数据都价值不菲.而利用爬虫,我们可以获取大量的价值数据,经分析可以发挥巨大的价值,比如: 豆瓣.知乎:爬取优质答案,筛选出各话题下热门内容,探索用户的舆论导向. 淘宝 ...
随机推荐
- 在linux上通过yum安装JDK
完全转载自:https://my.oschina.net/andyfeng/blog/601291 这里完整粘贴一份留存 卸载centos自带的jdk 1.查看当前的jdk版本,并卸载 [root@l ...
- Jackson的使用
Jackson框架是基于Java平台的一套数据处理工具,被称为"最好的JavaJson解析器". Jackson框架包含了3个核心库:streaming,databind,anno ...
- 第二周:Java For循环方法简介
1.for循环的作用 Java当中循环的意思就是让Java程序重复地执行某些语句.在程序设计时,常常需要处理大量的重复动作, 采用循环结构可以降低程序书写的长度和复杂度可使复杂问题简单化,提高程序的可 ...
- 异常:“System.Reflection.Metadata”已拥有为“System.Collections.Immutable”定义的依赖项
参考动态执行T4模板:https://msdn.microsoft.com/zh-cn/library/bb126579.aspx 我项目是.NET Framework 4.5控制台应用程序写的. 执 ...
- 2、NASA HS3(Hurricane AND Server Storm Sentinel)
国内访问不到,但是通过ppt可以看到,数据支撑做的很到位,前台展示很炫. 气象领域WebGL应用最好案例的当之无愧啊.这篇全部贴图了. 来自为知笔记(Wiz)
- SQL Server 数据库备份
declare @filename varchar(1024) declare @SQLDB varchar(50) declare @path varchar(1024) set @path = N ...
- oracle并发请求异常,运行时间超长(一般情况下锁表)
1.如果前台无法取消请求出现错误: 则后台更新 update fnd_concurrent_requests set status_code = 'X', phase_code = 'C' w ...
- .Net 连接字符串的解释
https://msdn.microsoft.com/zh-cn/library/cc716756.aspx 连接字符串参数 连接字符串的格式是使用分号分隔的键/值参数对列表: keyword1=va ...
- Linux学习笔记——重点推荐的Linux网络在线学习资源
首先非常感谢百度,感谢网络的搜索引擎技术,也非常感谢学习资源的贡献者和组织! 1:http://billie66.github.io/TLCL/book/zh/ 2:http://www.ha97. ...
- virt-manager管理整个云平台的instances
http://people.redhat.com/~rjones/virt-top/faq.html