day01

# requests请求库
# 1.安装与使用
# pip3 install requests
# 2.模拟浏览器
# General:
# Request URL:请求URL
# Requst Method:请求方式
# Status Code:响应状态码
# Response Headers:提交到服务器的数据头
# Cookie:用户信息
# User-Agent

'''
一.请求URL
http://www.xiaohuar.com/v/
二.请求方式
GET

  


三.请求头信息
User-Agent :用户代理
'''
import time
import requests
# 爬虫三部曲
# 1.发送请求
def get_page(url):
   respone=requests.get(url)
   return respone

  

# 2.解析数据
import re
def parse_index(html):

  

# findall匹配所有
#re.findall('匹配所有’,html,re.S)
#re.S(对全部文本进行匹配)
detail_urls=re.findall('<div class="items"><a class="imglink" href="(.*?)"',html,re.S)

  

#for detail_url in detail_urls:
#print(detail_url)
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.保存数据
#uuid.uuid4()根据时间戳生成一段世界上唯一的字符串
import uuid
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(5):
 url=f'http://www.xiaohuar.com/list-3-{line}.html'

  

#发送请求
response=get_page(url)

  

#print(response)
##返回响应状态码
#print(respone.status_code)
#返回响应文本
# #print(response.text)
#解析主页页面
detail_urls=parse_index(response.text)

  

#循环遍历详情页url
for detail_url in detail_urls:

  

#print(detail_url)
#往每一个详情页发送请求
 detail_res=get_page(detail_url)

  

#print(response.text)

#解析详情页获取视频url
move_url=parse_detail(detail_res.text)
   

  

#判断视频url存在则打印
 if move_url:
          print(move_url)

  

#往视频url发送请求获取视频二进制流
move_res=get_page(move_url)

  

#把视频的二进制流传给save_video函数去保存到本地
save_video(move_res.content)

  

#Post请求自动登入github:
#请求url:
# https//www.github.com/session
#请求方式:
# Post
#请求头:
# cookie

#请求体:


#1.获取token随机字符串
#请求url:
# https//www.github.com/login
#请求方式:
# GET
#请求头:
# cookie

#2.解析并提取token字符串
#正则
import requests
import re
login_url='https://github.com/login'

  

#login页面的请求头信息
login_header={
    'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36'
}
login_res = requests.get(url=login_url,headers=login_header)

  

#print(login_res)
#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页面cookie信息
#print(type(login_res.cookies))
#print(type(login_res.cookies.get_))
login_cookies= login_res.cookies.get_dict()

  

#session登入url
session_url='https://github.com/session'

  

#请求头信息
session_headers={'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36'

}

  

#请求体信息
form_data={
    "commit":"sign in",
    "utf8":"√",
    "authenticity_token":authenticity_token,
    "login":"tankjam",
    "password":"kerm",
    "webauthn-support":"supported"
}
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)

  



posted @ 2019-07-01 17:53  文莱  阅读(109)  评论(0)    收藏  举报