python 爬虫基础知识一
网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动的抓取万维网信息的程序或者脚本。
网络爬虫必备知识点
1. Python基础知识
2. Python中urllib和urllib2库的用法
3. Python正则表达式的使用
4. python Beautiful Soup的用法
5. Python爬虫框架Scrapy
网站浏览网页的过程
网页实质是由 HTML 代码构成的,爬虫爬来的便是这些内容,通过分析和过滤这些 HTML 代码,实现对图片、文字等资源的获取
URL
资源定位符,也就是我们说的网址,统一资源定位符是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它
URL的格式由三部分组成:
①第一部分是协议(或称为服务方式)。
②第二部分是存有该资源的主机IP地址(有时也包括端口号)。
③第三部分是主机资源的具体地址,如目录和文件名等。
爬虫爬取数据时必须要有一个目标的URL才可以获取数据,因此,它是爬虫获取数据的基本依据.
urllib,Urllib2库的基本使用
在python中,抓取网页的库是urllib2
# 例子,爬取百度主页的html代码
import urllib2
response = urllib2.urlopen('http://www.baidu.com/')
html = response.read()
print (html)
# urlopen的用法
urlopen(url, data=None, timeout=socket._GLOBAL_DEFAULT_TIMEOUT,cafile=None, capath=None, cadefault=False, context=None):
第一个参数为url,第二个为要发送的数据,第三个是超时时间。其余的一般不用
# 构造一个Request类,作为参数传入urlopen中,使Request类中就包含url,data,timeout等内容
import urllib2
request = urllib2.Request('http://www.baidu.com/')
response = urllib2.urlopen(request)
print (response.read())
POST和GET数据传送解析
数据传送分为POST和GET两种方式。
区别是GET方式是直接以链接形式访问,链接中包含了所有的参数,当然如果包含了密码的话是一种不安全的选择,不过你可以直观地看到自己提交了什么内容。POST则不会在网址上显示所有的参数
1. post 方式
# 例子,实现了POST方式的传送
import urllib
import urllib2 values = {"username":"1337047412@qq.com","password":"123456"}
data = urllib.urlencode(values)
url = "http://mail.163.com/"
request = urllib2.Request(url,data)
response = urllib2.urlopen(request)
print (response.read())
2. get 方式
GET方式可以直接把参数写到网址上面,直接构建一个带参数的URL
# 例子
import urllib
import urllib2 values = {}
values["username"] = "1337047412@qq.com"
values["password"] = "123456"
data = urllib.urlencode(values)
url = "http://mail.163.com/"
geturl = url + "?" + data
print (geturl)
# http://mail.163.com/?username=1337047412%40qq.com&password=123456
request = urllib2.Request(geturl)
response = urllib2.urlopen(request)
print (response.read())
设置headers属性,完全模拟浏览器工作
# 构建headers属性
headers = { 'User-Agent' : 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)', 'Referer':'http://mail.163.com/' }
Proxy(代理)的设置
urllib2 默认会使用环境变量 http_proxy 来设置 HTTP Proxy
# 例子
import urllib2
enable_proxy = True
proxy_handler = urllib2.ProxyHandler({"http":"http://some-proxy.com:8080"})
null_proxy_handler = urllib2.ProxyHandler({})
if enable_proxy:
opener = urllib2.build_opener(proxy_handler)
else:
opener = urllib2.build_opener(null_proxy_handler)
urllib2.install_opener(opener)
timeout 设置
# imeout的设置,可以设置等待多久超时,为了解决一些网站实在响应过慢而造成的影响
import urllib2
response = urllib2.urlopen("http://www.baidu.com",timeout=10)
HTTP 的 PUT 和 DELETE 方法
# http协议有六种请求方法,get,head,put,delete,post,options
PUT和POST极为相似,都是向服务器发送数据,但它们之间有一个重要区别,PUT通常指定了资源的存放位置,而POST则没有,POST的数据存放位置由服务器自己决定
DELETE:删除某一个资源
# 例子
import urllib2
request = urllib2.Request(url,data=data)
request.get_method = lambda:"PUT" # or "DELETE"
response = urllib2.urlopen(request)
python 爬虫基础知识一的更多相关文章
- Python爬虫基础知识入门一
一.什么是爬虫,爬虫能做什么 爬虫,即网络爬虫,大家可以理解为在网络上爬行的一直蜘蛛,互联网就比作一张大网,而爬虫便是在这张网上爬来爬去的蜘蛛咯,如果它遇到资源,那么它就会抓取下来.比如它在抓取一个网 ...
- Python 爬虫基础知识
requests Python标准库中提供了:urllib.urllib2.httplib等模块以供Http请求,但是,它的 API 太渣了.它是为另一个时代.另一个互联网所创建的.它需要巨量的工作, ...
- python 爬虫基础知识(继续补充)
学了这么久爬虫,今天整理一下相关知识点,还会继续更新 HTTP和HTTPS HTTP协议(HyperText Transfer Protocol,超文本传输协议):是一种发布和接收 HTML页面的方法 ...
- Python爬虫基础
前言 Python非常适合用来开发网页爬虫,理由如下: 1.抓取网页本身的接口 相比与其他静态编程语言,如java,c#,c++,python抓取网页文档的接口更简洁:相比其他动态脚本语言,如perl ...
- python爬虫-基础入门-python爬虫突破封锁
python爬虫-基础入门-python爬虫突破封锁 >> 相关概念 >> request概念:是从客户端向服务器发出请求,包括用户提交的信息及客户端的一些信息.客户端可通过H ...
- python爬虫-基础入门-爬取整个网站《3》
python爬虫-基础入门-爬取整个网站<3> 描述: 前两章粗略的讲述了python2.python3爬取整个网站,这章节简单的记录一下python2.python3的区别 python ...
- python爬虫-基础入门-爬取整个网站《2》
python爬虫-基础入门-爬取整个网站<2> 描述: 开场白已在<python爬虫-基础入门-爬取整个网站<1>>中描述过了,这里不在描述,只附上 python3 ...
- python爬虫-基础入门-爬取整个网站《1》
python爬虫-基础入门-爬取整个网站<1> 描述: 使用环境:python2.7.15 ,开发工具:pycharm,现爬取一个网站页面(http://www.baidu.com)所有数 ...
- Python数据挖掘——基础知识
Python数据挖掘——基础知识 数据挖掘又称从数据中 挖掘知识.知识提取.数据/模式分析 即为:从数据中发现知识的过程 1.数据清理 (消除噪声,删除不一致数据) 2.数据集成 (多种数据源 组合在 ...
随机推荐
- 20170803 Airflow自带的API进行GET 和POST动作部分内容
--1 首先你要有安装好的Airflow 环境并且在配置文件中有启用API 属性 --2 就是GET 和POST 方法的调用了 这里说一下,由于Airflow在网络上的资料比较少,可以从GETHUB中 ...
- 初试GH-OST(转)
最近老板让做一个gh-ost和pt-osc 的对比测试,本文将对两者做对比. 一.原理和所用说明 PT-OSC GH-OST 原理 1.创建一个和要执行 alter 操作的表一样的新的空表结构(是 ...
- 永久有效的 webstorm license server 20180808
下载地址 https://download.jetbrains.com/webstorm/WebStorm-2018.3.2.exe 2018年10月26日,最近老是过期,搞了一个1年有效的代码,是 ...
- koa : Express出品的下一代基于Node.js的web框架
https://www.liaoxuefeng.com/wiki/001434446689867b27157e896e74d51a89c25cc8b43bdb3000/001434501579966a ...
- Gradle全局变量定义及引用
在Project的build.gradle脚本中定义一些全局变量 ext { compileSdkVersion = 21 buildToolsVersion = "24.0.1" ...
- strncat、strcat
strncat函数 2007年03月15日 20:32:00 阅读数:13676 函数原型:extern char *strncat(char *dest,char *src,int n) 参数说明: ...
- token的使用流程
- centos 下python升级
https://www.cnblogs.com/leon-zyl/p/8422699.html
- js 图片区域可点击,适配移动端,图片大小随意改变
实现图片区域可点击,实际上使用map是可以的,但是适配效果并不好,图片只能是固定大小的值,而且点都被写死了. 在这里,我使用的js基于canvas写的一个小工具.可以圈出你需要点击的部分,然后生成一串 ...
- TestNG-详解preserve-order的作用与测试case的执行顺序
在TestNG xml配置文件中,关于<test>的配置里面,有一个属性叫preserve-order,一开始以为这个属性可以用来控制测试case(那些被@Test注解标注的方法)的执行顺 ...