fiddler

一个网页的呈现,中间不知一次http请求,平均一个网页差不多10-15个http请求
谷歌:
右键开发者工具,network
点击请求,右边栏请求详细信息
右边栏:request,headers response query stirng get 参数 form data: post参数
fiddler:
配置:
爬虫入门(二)_Python
抓包
<> :html内容
{json}:json数据,很可能就是个接口
{css}:css文件
{js}:js文件
爬虫入门(二)_Python_02
右上:http请求信息:
raw: 请求头部的详细信息
webforms:请求所带参数,query_string formdata

爬虫入门(二)_Python_03
右下:http响应信息
爬虫入门(二)_Python_04
左下黑色框,输入指令:
clear:清除所有请求
select json:快速选择所有json请求
select image 图片请求
select html html请求
?内容:搜索包含这个内容的所有请求

urllib库
       模拟浏览器发送请求的库,python自带
       python:urllib,urllib2
       python urllib.request  urllib.parse

重点掌握request

字符串二进制字符串之间的转化
encode() 字符串》二进制
如果小括号里面不写参数,默认utf-8
如果写,就可以使gbk
decode() 二进制==》字符串
如果小括号里面不写参数,默认utf-8
如果写,就可以使gbk

urllib.request

urlopen(url)
urlretrieve(url,“名字”)

urllib.parse

quote:url编码函数,将中文进行转化为%xxx
unquote:url解码函数,将%xxx转化为指定字符
(这两个就是方法就是把一些特殊的¥ 空格,中文惊醒编码或者解码操作)

import urllib.parse
url_image="https://i02piccdn.sogoucdn.com/ebae78799b6a852a"
url="https://www.sogou.com/sogou?query=%91%A8%E6%9D%B0%E4%BC%A6&pid=sogou-site-40f4da34bbe18021"
#url只能有特定的字符组成,字母,数字,下划线
#如果出现其他的,比如¥ 空格,中文等,就要对其进行编码
url1='http://baidu.com/html?name="狗蛋"&pwd=123456'
ret=urllib.parse.quote(url1)
print(ret)
re=urllib.parse.unquote(ret)
print(re)

urlencode:给一个字典,将字典拼接为query_string并且实现了编码的功能

u="http://www.baidu.com/index.html"
#假如参数有 name age sex height
#http://www.baidu.com/index.html?name=18&sex=nv&height=180
name='狗蛋'
age=18
sex='nv'
height='180'
date={
    'name':name,
    'age':age,
    'height':height,
}
#遍历字典
'''li=[]
for k,v in date.items():
    li.append(k+'='+str(v))
query_string='&'.join(li)
url=url+'?'+query_string
print(url)  等价于下面的方法'''
query_string=urllib.parse.urlencode(date)#不近可以拼接字符,并且可以转码
print(query_string)
response

read(): 获取相应内容,内容是字节类型
geturl() 获取请求的url
getheaders() 获取头部信息,列表里面有元祖
getcode() 获取状态码
readlines() 按行读取,返回列表,都是字节类型

代码演示:
import urllib.request
url='https://www.baidu.com/'#完整的url,http://www.baidu.com:80/index.html?name=goudan&password=123#lala
response=urllib.request.urlopen(url=url)
print(response)
print(response.read().decode())