获取 静态html网页 get请求和post请求 python3.7

事前准备,学会获取整个网页,以百度为示例,headers不加user-Agent会被反爬 有一些则更为严格
headers可以通过fidder或者Chrome 来获取 最后获取的是bytes类型 可以通过bytes.decode解码

import urllib.request
ua_headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36'
                            ' (KHTML, like Gecko) Chrome/60.0.3112.101 Safari/537.36'}
request = urllib.request.Request('http://www.baidu.com/', headers=ua_headers)
response = urllib.request.urlopen(request)
html = response.read()
print(html)

下面是通过get请求 直接在URL上输入 首先需要知道get的格式
https://www.baidu.com/s?ie=UTF-8&wd=你好啊
wd=后面的参数 是搜索时输入词通过urlencode后的结果 可以通过http://tool.chinaz.com/tools/urlencode.aspx查看
最后获取的是bytes类型 可以通过bytes.decode解码

import urllib.parse as parse
import urllib.request
url = 'http://www.baidu.com/'
headers = {'UserAgent': 'Mozilla'}
keyword = input(' 请输入关键字:')
wd = parse.urlencode({'wd': keyword})
fullurl = url + 's?ie=UTF-8&' + wd
print(fullurl)
request = urllib.request.Request(fullurl, headers=headers)
response = urllib.request.urlopen(request)
print(response.read())

下面是通过post请求,在使用urllib.request.Request方法时,如果data参数有值则为post请求
response如果进行了decode解码,解码后的文件为string格式的html数据
通过fiddler可以看到post请求需要start和limit,将其写到json中进行encode

import urllib.request
import urllib.parse

url = 'https://movie.douban.com/typerank?type_name=%E5%89%A7%E6%83%85&type=11&interval_id=100:90&action='
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36'
                         ' (KHTML, like Gecko) Chrome/60.0.3112.101 Safari/537.36'}
formdata = {'start': '20', 'limit': '100'}
data = urllib.parse.urlencode(formdata).encode(encoding='utf-8')
request = urllib.request.Request(url, data=data, headers=headers)
response = urllib.request.urlopen(request)
print(response.read().decode('utf-8'))
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: GET 和 POST 是 HTTP 请求方式中的两种常用方式。GET 请求是用于请求数据的,POST 请求是用于提交数据的。 GET 请求通过 URL 传递参数,而 POST 请求通过请求体传递参数。GET 请求对传输数据的大小有限制,而 POST 请求通常没有大小限制。GET 请求可以被缓存,而 POST 请求不会被缓存。GET 请求的结果可以被收藏为书签,POST 请求则不行。因此,GET 请求通常用于获取数据,POST 请求则通常用于提交数据。 ### 回答2: GET请求POST请求是HTTP协议中常见的两种请求方式,它们有以下几点区别: 1. 参数传递方式不同: GET请求通过URL的查询字符串传递参数,参数会附加在URL的末尾,如:http://example.com?param1=value1&param2=value2。而POST请求则将参数放在请求体中传递,不会直接暴露在URL中。 2. 请求长度限制不同: GET请求对URL的长度有限制,不同浏览器对URL长度的限制也不同,一般在2048个字符以内。而POST请求请求体的长度没有限制。 3. 安全性不同: GET请求的参数暴露在URL中,容易被恶意截取、修改和篡改,因此传输敏感信息时不适合使用GET请求。而POST请求的参数在请求体中,不会直接暴露,相对更安全。 4. 缓存处理方式不同: GET请求会被浏览器缓存起来,如果再次请求相同的URL,浏览器会直接返回缓存的内容。而POST请求不会被缓存,每次请求都会重新获取最新的数据。 5. 使用场景区别: GET请求适用于对服务器资源进行查询操作,不会改变服务器的状态,对服务器的负载较小,可以被书签收藏。而POST请求适用于向服务器提交数据,会改变服务器的状态,对服务器的负载较大。 总结:GET请求适用于查询操作、参数较少的情况,安全性要求较低;POST请求适用于提交数据、参数较多、安全性要求较高的情况。 ### 回答3: GET请求POST请求是HTTP协议中最常用的两种请求方法,它们的区别如下: 1. GET请求是从服务器获取资源的请求,而POST请求是向服务器提交数据的请求。 2. GET请求的参数会附加在URL的末尾,以查询字符串的形式传递给服务器,如:`http://example.com/path?param1=value1&param2=value2`。而POST请求的参数则包含在请求的消息体中,不会暴露在URL中。 3. GET请求对数据长度有限制,一般在几千个字符之内,而POST请求对数据长度没有限制。 4. GET请求的安全性较低,因为参数会附加在URL中,容易被窃取或缓存。而POST请求的安全性较高,请求参数不会明文传输,并且可以使用SSL等加密协议进行安全传输。 5. GET请求可被缓存,可通过浏览器的回退、刷新、书签等操作重复发送,适用于获取静态资源。POST请求不可被缓存,且每次发送时都需要重新构建请求。 6. GET请求在URL中传递参数,可被其他人直接看到和修改,不适合传递敏感信息。POST请求参数放在请求的消息体中,更加安全。 7. GET请求属于幂等的,即多次重复的请求对资源的状态没有影响。而POST请求不属于幂等的,多次重复的请求会对资源状态产生副作用。 综上所述,GET请求适用于获取数据,而POST请求适用于提交数据。在选择使用GET还是POST时,需要根据实际情况考虑数据的安全性、长度限制、缓存和幂等性等因素。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值