爬虫实战笔记

一章 爬虫基础

1HTTP基本原理
URL:统一资源定位符
URI:统一资源标志符

HTTP:Hyper Text Transfer Protocol 超文本传输协议
HTTPS: Hyper Text Transfer Protocol over Secure Socket Layer 即HTTP下加入SSL层

HTTP请求过程:
“检查”项
第一列Name:请求的名称
第二列Status:响应的状态码
第三列Type:请求的文档类型
第四列Initiator:请求源
第五列Size:从服务器下载的文件和请求的资源大小
第六列Time:发送请求到获取相应所用的总时间
第七列Waterfall:网络请求的可视化瀑布流

请求:
1请求方法:
GET 请求页面,并返回页面内容
POST 大多用于提交表单或上传文件,数据包含在请求体中
2请求的网址
3请求头:用来说明服务器要使用的附加信息,比较重要的信息有Cookie,Referer,User-Agent,Content-Type
4请求体
content-type 提交数据的方式
application/x-www-form-urlencoded 表单数据
multipart/form-data 表单文件上传
application/json 序列化JSON数据
text/xml XML数据

响应
1响应状态码
2响应头
3响应体
网页的源代码,JSON数据等

2网页基础
网页的组成
①HTML
②CSS Cascading Style Sheets 层叠样式表
#head.s-ps. s-p{
position:absolute;
bottom:400px;
width:100%;
height:181px;}
大括号前面是一个CSS选择器。选择器的意思是选中id为head且class为s-ps的节点,再选中其内部的class为s-p的节点
position指定为绝对布局 bottom指定元素下边距为40像素
width指定宽度为100%占满父元素 height指定元素的高度
③Javascript
Javascript通常也是以单独的文件形式加载的,后缀为js,在HTML中通过script标签即可引入,
例如:

<script src="jquery-2.1.0.js">   </script>

HTML定义了网页的内容和结构 CSS描述了网页的布局 Javascript定义了网页的行为

二.实践

1.urllib()
import urllib.request
response = urllib.request.urlopen('    ')
print(response.read().decode('utf-8'))
print(type(response))
print(response.status)
print(response.getheaders())
print(response.getheader('Server'))

urllib.request.urlopen(url, data=None, [timeout,]*, cafile=None, capath=None, context=None)

data参数是可选的,如需要添加,需要使用bytes()方法将参数转化为字节流编
码格式的内容,即bytes类型。
import urllib.parse
import urllib.request
data = bytes(urllib.parse.urlencode({'word':'hello'}),encoding='utf8')
response = urllib.request.urlopen(' ', data=data)

timeout参数 用于设置超时时间,单位为秒。

context参数,必须是ssl.SSLContext类型
cafile和capath两个参数分别指定CA证书和它的路径。

2.Request
import urllib.request
request = urllib.request.Request('')
response = urllib.request.urlopen(request)

class urllib.request.Request(url, data=None, headers={}
, origin_req_host=None, unverifiable=False, method=None)
第一个参数用于请求URL,必传参数,其他都是可选参数。
第二个参数data
第三个参数headers是一个字典,它就是请求头
第四个参数origin_req_host 请求方的host名称或者IP地址
第五个参数univerifiable表示这个请求是否是无法验证的
第六个参数method是一个字符串,用来指示请求的方法

from urllib import request,parse
url = 'http://httpbin.org/post'
headers = { 'User-Agent':' ', 'Host':' ' }
dict={'':''}
data = bytes(parse.urlencode(dict),encoding='utf-8')
req = request.Request(url=url, data=data, headers=headers
, method='POST')
response = request.urlopen(req)
print(response.read().decode('utf-8'))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值