Python+Fidder 4网络爬虫详解(全C站最全)

2 篇文章 0 订阅
1 篇文章 0 订阅

fidder4

1、 抓包
(1) <>:html
(2)Json: json data,也有可能是个接口
(3) Css:css project
(4)Js:js project
2、 Stop抓包:file->capture 点击就会切换
3、点击请求->右边选中->Inspectors
(1)右上:http请求
①Raw: 请求头部的详细信息
②Webforms:请求所带参数;query_string、formdata.
(2)右下:http响应信息(U should first break 压缩信息,点击黄色滚动条)
①点击黄色条进行解码;
②Raw:响应的所有信息;
③Headers:响应头;
④Json:接口返回的内容;(响应内容)
(3)左下指令框(可快速操作该程序)
①Clear:清除所有请求;
②Select + …:快速选择相关信息;
③?+ 内容(com/du…):快速搜索与内容匹配的的信息;

总结:fidder是专业的抓包工具,相比于google的网页开发者工具来看,fidder不存在将之前网页获取的信息覆盖的情况,fidder可以保留之前相关网页抓取的相关数据。

fidder4 界面展示

Python-urllib库

1、作用:模拟浏览器发送请求的库,Python自带库
2、Python 3:集成了两个库 urllib.rquest urllib.parse
3、相关功能
(1)Urllib.request
(2)Urlopen(url)
(3)Urlretrieve(url,image_path)
(4)Urilib.parse
I:quote
ii:unquoto
iii:urlencode
(5)Response
(6)Read() 读取相应内容,内容是字节类型
(7)Geturl() 获取请求的url
(8)Getheaders() 获取相应的头部信息(列表里面是元祖格式)
(9)Getcode() 获取状态码
(10)Readlines()

完整的url:

http://www.baidu.com:80/index/html?name=goudan&passward = 123#lala

www.baidu.com:域名
index/html?:文件
name=goudan&passward = 123:get()所带的参数
#lala:锚点
:80/:端口

抓包工具使用-urlopen4

import urllib.request
url = 'http://www.baidu.com'
reaponse = urllib.request.urlopen(url = url)#发送请求
#print(response) #打印可知response是一个对象
#print(response.read().decode())#获取对象里面的内容
#print((response.getheaders()))#以元组的方式获取数据
#print(dict(response.getheaders()))#将getheaders()方法获取的数据以字典的方式展现出来。
#print(response.getcode()) #获取状态码
#print(response.readlines()) #按行读取,返回列表,都是字节类型。
'''此刻是B格式,也就是二进制格式,所以我们要将二进制格式转化为字符串格式。 

 1. encode() 字符串 -> 二进制
 2. decode() 二进制 -> 字符串
 如果括号里面不写任何参数,默认是utf-8,如果写,就是gbk

在获取对象里面的内容之前,先将二进制内容转化为字符串格式;在这之前先查看本网页的编码格式。
'''
with open('baidu.html','w',encoding = 'utf-8') as fp:
	fp.write(response.read().decode())
'''此时你已经将获取的内容以’baidu.html‘的文件保存了起来,毫无疑问,格式是html,运行该文件之后,就可以看到百度首页界面了。'''
with open('baidu1.html','wb') as fp: #直接以二进制的方式读取,’wb‘为二进制读取方式
	fp.write(response.read())

urlrequest - urlparse 构建请求对象

先复制图片地址

image_url = 'https://pics7.baidu.com/feed/caef76094b36acafca8bf2e6c1a8091601e99c3d.jpeg?token=13591fc3a05c20a49617777abbaabf53'
response = urllib.request.urlopen(image_url)
#图片只能写入本地二进制的格式
with open('qing.jpg','wb') as fp:
	fb.write(response.read())

(Urlopen(url))这样就可以将图片保存到本地了

第二种方法:

image_url = 'https://pics7.baidu.com/feed/caef76094b36acafca8bf2e6c1a8091601e99c3d.jpeg?token=13591fc3a05c20a49617777abbaabf53'
urllib.request.uelretrieve(image_url,'chun.jpg')

(Urlretrieve(url,image_path))这样可以直接写入

Urilib.parse

I:quote
ii:unquoto
iii:urlencode
import urllib.parse
image_url = 'https://gimg2.baidu.com/image_search/src=http%3A%2F%2Finews.gtimg.com%2Fnewsapp_match%2F0%2F11638167724%2F0.jpg&refer=http%3A%2F%2Finews.gtimg.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1638521018&t=9ae6d69f2f0ed50aba91c06a1685e596'
parse.quote()编码函数 parse.unquote()解码函数的使用

url只能由特定的字符组成,字母、数字、下划线
如果出现其他的,比如$、空格、中文等,就要对其进行编码,是属于非法的编码格式;此时就要用parse.quoto

url = 'http://www.baidu.com/index.html?name=狗蛋&pwd=12345'#属于非法编码格式
ret = urllib.parse.quote(url) #编码函数
re = urllib.parse.unquoto(url) #解码函数
print(ret)

这时候也可以借用编码站长工具(度娘既有)
quote url编码函数,将中文进行转化为%XXX
unquote url解码函数,将%XXX转化为指定字符

parse.urlencode
import urllib.parse
#url = 'http://baidu.com/index.html'#现在要对这个url发送请求的时候是需要参数的
#加入参数有 name age sex height,那么在写代码的时候需要拼接过来
name = 'goudan'
age = 18
sex = 'boy'
height = 180

#url = 'http://baidu.com/index.html?name=goudan&age=18&sxe=boy&heighr=180'
#通过拼接字典内容的方式
data={
'name' = goudan,
'age' = 18,
'sex' = boy,
'height' = 180
}
#遍历字典
for k,v in data.items()
	it.append(k+'='+str(v))
query_string = '&'.join(it)
url = url+'?'+query_string
#但是urllib里面已经有开发者完成的函数了,在此特别感谢广大Python第三方库开发者们

query_string = urllib.parse.urllencode(data)

urllencode()函数里面需要传递的是字典;query_string就是上述我写的代码的封装了;而且urllencode()函数已经可以将非法字进行编码了,所以我们在使用urllencode()函数的时候就不需要再去考虑非法字符的相关问题了。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值