admin管理员组文章数量:1663973
接着上篇,继续讲解http协议
老司机,带你用30行代码爬取高清美女写真,附安装包+源码
这里只讲解爬虫用得到部分;
浏览器的解析
F12打开,点击Network,F5刷新,就可以看到
HTTP客服端协议
url解析
http://www.demo:8080/list/index.php?boardID=5&ID=24618&page=1#name
1.协议部分
该URL的协议部分为“http:”,常见的有http:,和https:,其他的还有ftp,utp
2域名部分
该URL的域名部分为“www.demo”。
常见域名后缀有///
内网通常使用IP作为域名
3.端口部分
跟在域名后面的数字是端口,域名和端口之间使用“:”作为分隔符。
端口不是一个URL必须的部分,如果省略端口部分,将采用默认端口80
4、虚拟目录部分:
从域名后的第一个“/”开始到最后一个“/”为止,是虚拟目录部分。
虚拟目录也不是一个URL必须的部分。本例中的虚拟目录是“/list/”
5、文件名部分:
从域名后的最后一个“/”开始到“?”为止,
是文件名部分,如果没有“?”,则是从域名后的最后一个“/”开始到“#”为止,是文件部分。
如果没有“?”和“#”,那么从域名后的最后一个“/”开始到结束,都是文件名部分。
本例中的文件名是“index.asp”。文件名部分也不是一个URL必须的部分,如果省略该部分,则使用默认的文件名
6、锚部分:
从“#”开始到最后,都是锚部分。本例中的锚部分是“name”。锚部分也不是一个URL必须的部分
7、参数部分:
从“?”开始到“#”为止之间的部分为参数部分,又称搜索部分、查询部分。本例中的参数部分为“boardID=5&ID=24618&page=1”。参数可以允许有多个参数,参数与参数之间用“&”作为分隔符。
HTML 请求方法:Request Method:
get:
GET 请求可被缓存
GET 请求保留在浏览器历史记录中
GET 请求可被收藏为书签
GET 请求不应在处理敏感数据时使用
GET 请求有长度限制
GET 请求只应当用于取回数据(不修改)
Python模拟get请求
payload = {'key1': 'value1', 'key2': ['value2', 'value3']}
res = requests.get('http://www.baidu', params=payload)
print(res.url)
http://www.baidu.com?key1=value1&key2=value2&key2=value
post:
POST 请求不会被缓存
POST 请求不会保留在浏览器历史记录中
POST 不能被收藏为书签
POST 请求对数据长度没有要求
Python模拟post请求
import requests
# Request URL
url = 'https://www.XX/Goods/GoodsDetail'
# Request Data
data = dict(
#参数
id=13404
)
response = requests.post(url, data)
print(response) #请求状态
print(response.content) #返回结果
put:
PUT 用于将数据发送到服务器来创建/更新资源。
POST 和 PU T之间的区别在于 PUT 请求是幂等的(idempotent)。也就是说,多次调用相同的 PUT 请求将始终产生相同的结果。相反,重复调用POST请求具有多次创建相同资源的副作用。
# 使用urllib2
import urllib2
url="http://localhost"
param='{"userid":1}'
request=urllib2.Request(url.param)
request.add_header("Content-Type","application/json")
request.add_header("Accept","application/json")
request.get_method=lambda :"GET"#"GET,POST,PUT,DELETE"
response=urllib2.urlopen(request)
response_txt=response.read()
response_header=response.info()
DELETE
DELETE 方法删除指定的资源。
user-agent:
浏览器标识–出于兼容及推广等目的,很多浏览器的标识相同,因此浏览器标识并不能说明浏览器的真实版本,真实版本信息在 UA 字串尾部可以找到。
Python 添加ua
req = request.Request(url)
req.add_header('User-Agent','Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.122 UBrowser/4.0.3214.0 Safari/537.36')
# 正常访问
rsp = request.urlopen(req)
html = rsp.read().decode()
print(html)
结语:
掌握这个,对浏览器模拟有一个更加清晰的认知。
粉丝福利
版权声明:本文标题:实操续:爬虫基础知识,浏览器最基本的配置方法 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dianzi/1730013865a1219136.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论