gat和post封装代码和爬虫的5个步奏
2024-08-25 15:59:08
1了解需求
2根据需求找网站
3请求
4获取
5存储
from urllib import request, parse
from urllib.error import HTTPError, URLError def get(url, headers=None):
return urlrequests(url, headers=headers)
#必须写headers,因为按顺序走会form def post(url, form, headers=None):
return urlrequests(url, form, headers=headers) #b. post(url, form, headers=None) def urlrequests(url, form=None, headers=None):
user_agent = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'
# 如果用户需要自行传入headers, 则覆盖之前的headers
if headers == None:
headers = {
'User-Agent': user_agent
}
html_bytes = b''
try:
if form:
# POST请求
# 2.1 转换成str
form_str = parse.urlencode(form)
#print(form_str)
# 2.2 转换成bytes
form_bytes = form_str.encode('utf-8')
req = request.Request(url, data=form_bytes, headers=headers)
else:
# GET请求
req = request.Request(url, headers=headers)
response = request.urlopen(req)
html_bytes = response.read()
except HTTPError as e:
print(e)
except URLError as e:
print(e) return html_bytes if __name__ == '__main__':
url = 'http://fanyi.baidu.com/sug'
#1,准备数据
form = {
'kw': '呵呵'
}
html_bytes = post(url, form=form)
#2,调到函数
print(html_bytes)
#3,打印 # url = 'http://www.baidu.com'
# html_byte = get(url)
# print(html_byte)
最新文章
- jQuery-1.9.1源码分析系列(七) 钩子(hooks)机制及浏览器兼容
- JavaScript-在当前显示区范围内实现点不到的小方块
- NODEJS-fs模块操作文件系统
- LeetCode Two Sum II - Input array is sorted
- Head First 设计模式 --3 装饰者模式 开闭原则
- 两种获取connectionString的方式
- HDU 1150 Machine Schedule (二分图最小点覆盖)
- Linux命令总结(转载)
- IIS 启用或关闭目录浏览
- angularJS $watch $digest $apply
- Objective-c 方法的调用
- 南京.NET线下活动后续—一对一技术交流
- vue轮播图中间大两头小
- python语法_模块_time_datetime_random
- 第 10 章 容器监控 - 080 - Weave Scope 容器地图
- C# 把ABCD转换成数字
- 使用 IntraWeb (28) - 基本控件之 TIWTemplateProcessorHTML、TIWLayoutMgrHTML、TIWLayoutMgrForm
- 实现定时器定时 1 秒钟,LED 亮灭显示
- MVC bundle的使用总结
- jsp路径问题之base