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爬虫 | 一条高效的学习路径
数据是创造和决策的原材料,高质量的数据都价值不菲.而利用爬虫,我们可以获取大量的价值数据,经分析可以发挥巨大的价值,比如: 豆瓣.知乎:爬取优质答案,筛选出各话题下热门内容,探索用户的舆论导向. 淘宝 ...
随机推荐
- pip/easy_install failure: failed to create process
使用pip install requests安装requests, 报错: failed to create process 解决方法: 执行Python -m pip install --upgra ...
- C++ const用法总结
1 const分顶层const,底层const2 顶层const可以表示任意类型的对象是常量.eg: const int i:i是一个整型常量 int *const ccc:ccc是指向 ...
- ANSYS经典APDL编程
在使用ANSYS的过程中的一些经验总结: Ansys Workbench 有限元分析虽然进入UI阶段,但是语言命令仍然是其基础核心. 1.ANSYS中的一些关键概念的理解; 参数化程序设计语言(APD ...
- Android 进程通信机制之 AIDL
什么是 AIDL AIDL 全称 Android Interface Definition Language,即 安卓接口描述语言.听起来很深奥,其实它的本质就是生成进程间通信接口的辅助工具.它的存在 ...
- spring mvc使用@InitBinder 标签对表单数据绑定
在SpringMVC中,bean中定义了Date,double等类型,如果没有做任何处理的话,日期以及double都无法绑定. 解决的办法就是使用spring mvc提供的@InitBinder标签 ...
- js中使用进行字符串传参
在js中拼接html标签传参时,如果方法参数是字符串需要加上引号,这里需要进行字符转义 <a href='javascript:addMenuUI("+"\"&qu ...
- Python中__init__方法
注意1.__init__并不相当于C#中的构造函数,执行它的时候,实例已构造出来了. 1 2 3 4 5 class A(object): def __init__(self,name): ...
- 如何去除My97 DatePicker控件上右键弹出官网的链接
http://my97.net/dp/My97DatePicker/calendar.js?最后结尾处: 这个就是官网链接地址了. 然后查找 net,nte,ent,etn,ten,tne最终找到了“ ...
- 解决VS2012上面EF字段说明备注没有的方法
VS2012中的EF有一个BUG 如下: 明明在数据库上面是写有字段说明的到了EF上面就没有了很郁闷: 网络上面有一个解决方法如下: http://www.cnblogs.com/stone_w/ar ...
- copy elision
http://book.51cto.com/art/200810/93007.htm 1.2.2 数据传送指令 mov:数据移动.第一个参数是目的,第二个参数是来源.在C语言中相当于赋值号.这是最广 ...