今日内容:爬虫课程:   一 爬虫基本原理   二 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请求库相关推荐

  1. 01爬虫基本原理及Requests库下载

    一.爬虫基本原理 1.什么是爬虫 ​ 爬虫就是爬取数据 2.什么是互联网? ​ 就是由一堆网络设备,把一台台的电脑互联在一起 3.互联网建立的目的 ​ 数据的传递和数据共享 4.什么是数据? ​ 例如 ...

  2. Day02:requests请求库,selenium请求库

    一 requests请求库爬取豆瓣电影信息  - 请求url https://movie.douban.com/top250 - 请求方式 GET​- 请求头 user-agent cookies i ...

  3. day02 requests请求库爬取豆瓣电影信息+selenium请求库

    一. requests请求库爬取豆瓣电影信息 - 请求url http://movie.douban.com/top250 - 请求方式 GET - 请求头 user-agent    cookies ...

  4. Requests请求库

    Requests请求库 import requests # -*- coding:utf8 -*- # -*- coding:utf8 -*- # 工程路径:3 requests请求库使用.py # ...

  5. Python爬虫【二】请求库requests

    一.requests的常用请求方式 #各种请求方式:常用的就是requests.get()和requests.post() >>> import requests >>& ...

  6. 爬虫之基本原理及简单使用、请求库之requests库及小案例

    文章目录 1.基本原理及简单使用 1.1.定义 1.2.爬虫的基本流程 1.3.请求与响应 1.4.Request 1.5.Response 1.6.总结 2.请求库之requests库 2.1.基本 ...

  7. 0.爬虫介绍及requests库的使用

    1. 互联网知识介绍 互联网: 是由网络设备(网线, 路由器, 交换机, 防火墙...)和一台台计算机链接而成. 互联网建立的目的: 数据的共享/传递. 俗称的'上网': 由用户端计算机发送请求给目标 ...

  8. 爬虫工作流程、请求与响应原理、requests库讲解

    爬虫工作流程.请求与响应原理.requests库讲解 爬虫分类主要分为两大板块 web爬虫(浏览器爬虫) APP爬虫(手机端爬虫) 在这两大板块中又可以把爬虫归类为聚焦爬虫和通用爬虫 聚焦爬虫:针对某 ...

  9. python网络爬虫教程(四):强大便捷的请求库requests详解与编程实战

    上一章中,我们了解了urllib的基本用法,详情可浏览如下链接python网络爬虫教程(三):详解urllib库,但其中确实有不方便的地方,为此,我们可以使用更方便更简洁的HTTP请求库request ...

  10. Python 网络爬虫笔记2 -- Requests库实战

    Python 网络爬虫笔记2 – Requests库实战 Python 网络爬虫系列笔记是笔者在学习嵩天老师的<Python网络爬虫与信息提取>课程及笔者实践网络爬虫的笔记. 课程链接:P ...

最新文章

  1. 【概率论与数理统计】假设检验
  2. 一枚菜狗子的2016总结
  3. springcloud 返回json
  4. 关于echars中雷达图的一些配置
  5. Java正则表达式入门
  6. SpringBoot中关于Shiro权限管理的整合使用
  7. 7月1日 cf总结
  8. 为什么需要动态内存分配?
  9. 验证登陆信息的合法性
  10. [Vue.js] 基础 -- Vue常用特性
  11. python中提取几列_自己录制的公开课视频中提取字幕(python+opencv+Tesseract-OCR)
  12. QoS中拥塞避免机制详解——WRED技术详解
  13. Let’s to be a bug-free programmer
  14. 金融破段子 | 如果早知赚钱概率只有8%,你会不会改变投资策略
  15. 推荐个软件EveryThing(可以快速找到电脑里的各种东西)
  16. lidar_camera_calib学习笔记(激光雷达相机标定)
  17. Go 爬虫软件 Pholcus
  18. 搜狗输入法怎么打印间隔号
  19. RK3399 Android7.1 充电芯片bq25723发生ACOV后引起系统黑屏死机
  20. 微信公众号 h5微信充值功能

热门文章

  1. Linux之web服务搭建静态网页------综合练习
  2. HDOJ--1233--还是畅通工程
  3. python利用Tesseract识别验证码
  4. Windows打印服务器上无法删除打印机
  5. 学习笔记--对最近学习的总结
  6. 无界面和应用图标的应用程序
  7. JavaWeb学习之Servlet(三)----Servlet的映射匹配问题、线程安全问题
  8. [傅里叶变换及其应用学习笔记] 二十二. 快速傅里叶变换
  9. mysql计算指定的时间TPS
  10. 一位程序员从业余项目被收购中所学到的