网络爬虫(又被称为网页蜘蛛,网络机器人,在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 爬虫基础知识一的更多相关文章

  1. Python爬虫基础知识入门一

    一.什么是爬虫,爬虫能做什么 爬虫,即网络爬虫,大家可以理解为在网络上爬行的一直蜘蛛,互联网就比作一张大网,而爬虫便是在这张网上爬来爬去的蜘蛛咯,如果它遇到资源,那么它就会抓取下来.比如它在抓取一个网 ...

  2. Python 爬虫基础知识

    requests Python标准库中提供了:urllib.urllib2.httplib等模块以供Http请求,但是,它的 API 太渣了.它是为另一个时代.另一个互联网所创建的.它需要巨量的工作, ...

  3. python 爬虫基础知识(继续补充)

    学了这么久爬虫,今天整理一下相关知识点,还会继续更新 HTTP和HTTPS HTTP协议(HyperText Transfer Protocol,超文本传输协议):是一种发布和接收 HTML页面的方法 ...

  4. Python爬虫基础

    前言 Python非常适合用来开发网页爬虫,理由如下: 1.抓取网页本身的接口 相比与其他静态编程语言,如java,c#,c++,python抓取网页文档的接口更简洁:相比其他动态脚本语言,如perl ...

  5. python爬虫-基础入门-python爬虫突破封锁

    python爬虫-基础入门-python爬虫突破封锁 >> 相关概念 >> request概念:是从客户端向服务器发出请求,包括用户提交的信息及客户端的一些信息.客户端可通过H ...

  6. python爬虫-基础入门-爬取整个网站《3》

    python爬虫-基础入门-爬取整个网站<3> 描述: 前两章粗略的讲述了python2.python3爬取整个网站,这章节简单的记录一下python2.python3的区别 python ...

  7. python爬虫-基础入门-爬取整个网站《2》

    python爬虫-基础入门-爬取整个网站<2> 描述: 开场白已在<python爬虫-基础入门-爬取整个网站<1>>中描述过了,这里不在描述,只附上 python3 ...

  8. python爬虫-基础入门-爬取整个网站《1》

    python爬虫-基础入门-爬取整个网站<1> 描述: 使用环境:python2.7.15 ,开发工具:pycharm,现爬取一个网站页面(http://www.baidu.com)所有数 ...

  9. Python数据挖掘——基础知识

    Python数据挖掘——基础知识 数据挖掘又称从数据中 挖掘知识.知识提取.数据/模式分析 即为:从数据中发现知识的过程 1.数据清理 (消除噪声,删除不一致数据) 2.数据集成 (多种数据源 组合在 ...

随机推荐

  1. 如何把Composer镜像迁移到Laravel China 维护的镜像?

    今天在更新Laravel-admin:1.6.0提示没有对应的包,后面才发现需要使用官方或者 Laravel-China 的 composer 镜像,phpcomposer 镜像已经停止维护了.怎么从 ...

  2. Socket接口

    Socket接口 Socket: Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口.在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Sock ...

  3. 将中文字符串分割为数组 解决str_split中文乱码php

    首先来介绍str_split()这个函数: 它的作用是将字符串分割为数组: 例如: $str='abcde';str_plite($str); 打印结果如下:Array(    [0] => a ...

  4. 算法 -- 四种方法获取的最长“回文串”,并对时间复杂进行分析对比&PHP

    https://blog.csdn.net/hongyuancao/article/details/82962382 “回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就 ...

  5. DLNg改善深层NN:第一周DL的实用层面

    1.为什么正则化可以减少过拟合? //答:可以让模型参数变小,减小模型的方差. 在损失函数中加入正则项,在正则化时,如果参数lamda设置得足够大,那么就相当于权重系数W接近于0 ,就会减少很多隐藏单 ...

  6. Spring Hibernate Transaction示例

    JDBCDAO.java package com.bf; import java.sql.ResultSet; import java.sql.SQLException; import java.ut ...

  7. 虚拟IP技术

    虚拟IP技术在高可用领域像数据库SQLSERVER.web服务器等场景下使用很多,很疑惑它是怎么实现的,偶然,发现了一种方式可以实现虚拟ip.它的原理在于同一个物理网卡,是可以拥有多个ip地址的,至于 ...

  8. MySQL--3约束和修改数据表总结

  9. 转Git配置SSH,并Push到GitHub上的相关流程

    首先,你可以试着输入git,看看系统有没有安装Git $ git The program 'git' is currently not installed. You can install it by ...

  10. System.Web.HttpException (0x80004005): 验证视图状态 MAC 失败。如果此应用程序由网络场或群集承载,请确保 <machineKey> 配置指定了相同的 validationKey 和验证算法。不能在群集中使用 AutoGenerate。

    异常描述: Global.asax捕获到异常:System.Web.HttpException (0x80004005): 验证视图状态 MAC 失败.如果此应用程序由网络场或群集承载,请确保 < ...