Day01 爬虫基本原理及requests请求库
今日内容:爬虫课程: 一 爬虫基本原理 二 requests请求库一 爬虫基本原理 1、什么是爬虫? 爬虫就是爬取数据 2、什么是互联网? 由一堆网络设备,把一台台的计算机互联到一起称之为互联网。 3、互联网建立的目的 数据的传递与数据的互享。 4、什么是数据? 例如: 电商平台的商品信息(淘宝、京东、亚马逊) 链家、自如租房平台的房源信息 股票证券投资信息(东方财富、雪球网) 。。。 12306,票务信息(抢票) 5、什么是上网? 普通用户: 打开浏览器 -->输入网址 -->往目标主机发送请求 -->返回响应数据 -->把数据渲染到浏览器中 爬虫程序: 模拟浏览器 -->往目标主机发送请求 -->返回响应数据 -->解析并提取有价值的数据 -->保存数据(文件写入本地、持久化到数据库中) 6、爬虫的全过程 1、发送请求(请求库:Requests/Selenium) 2、获取相应数据 3、解析数据(解析库:BeautifulSoup4) 4、保存数据(存储库:文件保存/MongoDB) 总结:我们可以把互联网中的数据比喻成一座宝藏,爬虫其实就是在挖去宝藏。二 requests请求库 1、安装与使用 pip3 install requests 2、分析请求流程(模拟浏览器) 一 百度: 1、请求url: https://www.baidu.com/ 2、请求方式 GET POST 3、响应状态码 一、访问校花网
import time import requests #爬虫三部曲 #1.发送请求 def get_page(url):response = requests.get(url)return response # 2.解析数据 import re def parse_index(html):# findall匹配所有# re.findall('正则匹配规则','匹配文本','匹配模式')# re.S:对所有文本进行搜索匹配detail_urls = re.findall('<div class="items"><a class="imglink" href="(.*?)"',html,re.S)return detail_urls # 解析详情页 def parse_detail(html):movie_url = re.findall('<source src="(.*?)">',html,re.S)#print(movie_url)if movie_url:return movie_url[0] # 3.保存数据 import uuid #uuid.uuid4()根据时间戳生成一段世界上唯一的字符串 def save_video(content):with open(f'{uuid.uuid4()}.mp4','wb')as f:f.write(content)print('视频下载完毕') # main + 回车键 # 测试用例 if __name__ == '__main__':for line in range(6):url=f'http://www.xiaohuar.com/list-3-{line}.html'#发送请求response = requests.get(url)#print(response)# # 返回响应状态码# print(response.status_code)# # 返回响应文本# print(response.text)#解析主页页面detail_urls = parse_index(response.text)#循环遍历详情页urlfor detail_url in detail_urls:# print(detail_url)# 往每一个详情页发送请求detail_res = get_page(detail_url)#print(response.text)#解析详情页获取视频urlmovie_url = parse_detail(detail_res.text)# 判断视频url存在则打印if movie_url:print(movie_url)# 往视频url发送请求获取视频二进制流movie_res = get_page(movie_url)# 把视频的二进制流传给save_video函数保存到本地save_video(movie_res.content)
二、访问github
'''''' ''' POST请求自动登录github请求URL:https://github.com/session请求方式:POST请求头CookieUser-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36请求体commit:Sign inutf8:✓authenticity_token:cFSDQ5zTaUkkx13xtncPeJhxAnqGiKPoWzKBuTvFyapNXsVlD6MIR/7IBtaIjEOT3yOPiYYXCxAEkZwsnjTO4g==login:******password:****webauthn-support:unknown ''' # 1.获取token随机字符串 ''' 1.访问登录页面获取token字符串请求URL:https://github.com/session请求方式:GET请求头CookieUser-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36 2.解析并提取token字符串 #正则 <input type="hidden" name="authenticity_token" value="(.*?)" /> ''' import requests import re login_url ='https://github.com/login' # login页面的请求头信息 login_header ={'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36' } login_res=requests.get(url=login_url,headers=login_header) # print(login_res.text) # 解析提取token字符串 authenticity_token = re.findall('<input type="hidden" name="authenticity_token" value="(.*?)" />',login_res.text,re.S )[0] print(authenticity_token) # 获取login页面的cooies信息 # print(type(login_res.cookies)) # print(type(login_res.cookies.get_dict())) login_cookies = login_res.cookies.get_dict() # 2.开始登陆github ''' POST请求自动登录github请求URL:https://github.com/session请求方式:POST请求头CookieUser-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36请求体commit:Sign inutf8:✓authenticity_token:cFSDQ5zTaUkkx13xtncPeJhxAnqGiKPoWzKBuTvFyapNXsVlD6MIR/7IBtaIjEOT3yOPiYYXCxAEkZwsnjTO4g==login:******password:**********webauthn-support:unknown ''' # session登录url session_url ='https://github.com/session' # 请求头信息 session_headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36' } # 请求体信息 form_data ={ 'commit':'Sign in','utf8':'✓','authenticity_token':authenticity_token,'login':'********','password':'********','webauthn-support':'unknown', } session_res = requests.post(url=session_url,headers=session_headers,cookies=login_cookies,data=form_data) with open('github3.html','w',encoding='utf-8') as f:f.write(session_res.text)
转载于:https://www.cnblogs.com/qwe1617039242/p/11113941.html
Day01 爬虫基本原理及requests请求库相关推荐
- 01爬虫基本原理及Requests库下载
一.爬虫基本原理 1.什么是爬虫 爬虫就是爬取数据 2.什么是互联网? 就是由一堆网络设备,把一台台的电脑互联在一起 3.互联网建立的目的 数据的传递和数据共享 4.什么是数据? 例如 ...
- Day02:requests请求库,selenium请求库
一 requests请求库爬取豆瓣电影信息 - 请求url https://movie.douban.com/top250 - 请求方式 GET- 请求头 user-agent cookies i ...
- day02 requests请求库爬取豆瓣电影信息+selenium请求库
一. requests请求库爬取豆瓣电影信息 - 请求url http://movie.douban.com/top250 - 请求方式 GET - 请求头 user-agent cookies ...
- Requests请求库
Requests请求库 import requests # -*- coding:utf8 -*- # -*- coding:utf8 -*- # 工程路径:3 requests请求库使用.py # ...
- Python爬虫【二】请求库requests
一.requests的常用请求方式 #各种请求方式:常用的就是requests.get()和requests.post() >>> import requests >>& ...
- 爬虫之基本原理及简单使用、请求库之requests库及小案例
文章目录 1.基本原理及简单使用 1.1.定义 1.2.爬虫的基本流程 1.3.请求与响应 1.4.Request 1.5.Response 1.6.总结 2.请求库之requests库 2.1.基本 ...
- 0.爬虫介绍及requests库的使用
1. 互联网知识介绍 互联网: 是由网络设备(网线, 路由器, 交换机, 防火墙...)和一台台计算机链接而成. 互联网建立的目的: 数据的共享/传递. 俗称的'上网': 由用户端计算机发送请求给目标 ...
- 爬虫工作流程、请求与响应原理、requests库讲解
爬虫工作流程.请求与响应原理.requests库讲解 爬虫分类主要分为两大板块 web爬虫(浏览器爬虫) APP爬虫(手机端爬虫) 在这两大板块中又可以把爬虫归类为聚焦爬虫和通用爬虫 聚焦爬虫:针对某 ...
- python网络爬虫教程(四):强大便捷的请求库requests详解与编程实战
上一章中,我们了解了urllib的基本用法,详情可浏览如下链接python网络爬虫教程(三):详解urllib库,但其中确实有不方便的地方,为此,我们可以使用更方便更简洁的HTTP请求库request ...
- Python 网络爬虫笔记2 -- Requests库实战
Python 网络爬虫笔记2 – Requests库实战 Python 网络爬虫系列笔记是笔者在学习嵩天老师的<Python网络爬虫与信息提取>课程及笔者实践网络爬虫的笔记. 课程链接:P ...
最新文章
- 【概率论与数理统计】假设检验
- 一枚菜狗子的2016总结
- springcloud 返回json
- 关于echars中雷达图的一些配置
- Java正则表达式入门
- SpringBoot中关于Shiro权限管理的整合使用
- 7月1日 cf总结
- 为什么需要动态内存分配?
- 验证登陆信息的合法性
- [Vue.js] 基础 -- Vue常用特性
- python中提取几列_自己录制的公开课视频中提取字幕(python+opencv+Tesseract-OCR)
- QoS中拥塞避免机制详解——WRED技术详解
- Let’s to be a bug-free programmer
- 金融破段子 | 如果早知赚钱概率只有8%,你会不会改变投资策略
- 推荐个软件EveryThing(可以快速找到电脑里的各种东西)
- lidar_camera_calib学习笔记(激光雷达相机标定)
- Go 爬虫软件 Pholcus
- 搜狗输入法怎么打印间隔号
- RK3399 Android7.1 充电芯片bq25723发生ACOV后引起系统黑屏死机
- 微信公众号 h5微信充值功能