day01(跳过github登录、requests请求库)
什么是爬虫?
爬虫就是爬取数据
什么是数据?
电商平台的商品信息、12306票务信息、股票证券投资信息等
requests请求库的安装
在cmd窗口中输入python,然后输入 pip3 install requests
在检查网页的Network的Headers中各个标识的涵义
Request URL:https://www.baidu.com/ (请求url)
Request Method:GET (请求方式)
Status Code:200 OK (响应状态码)
Response Headers (提交到服务器的数据头)
Cookie (用户信息)
User-Agent (用户代理)
import time import requests import re # 发送请求 def get_page(url): response = requests.get(url) return response # 解析数据 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) if movie_url: return movie_url[0] 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 = get_page(url) print(response) # 返回响应状态码 print(response.status_code) # 返回响应文本 print(response.text) # 解析主页页面 detail_urls = parse_index(response.text) # 循环遍历详情页url for detail_url in detail_urls: # 往每一个详情页发送请求 detail_res=get_page(detail_url) # 解析详情页获取视频url movie_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)
2.Github
2.1 只有POST请求才会有请求体
2.2 在Network-->login--->Response-->Ctrl+F 然后就可以在下列搜索框中输入要查找的东西
2.3请求体:
第一步:解析并提取token字符串
import requests import re login_url='https://github.com/login' # login页面的请求头信息 login_header={'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 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_cookies = login_res.cookies.get_dict()
实验结果:
第二步:登录
session_url = 'https://github.com/session' session_headers={'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36'} form_data={ "commit":"Sign in", "utf8":"√", "authenticity_token":authenticity_token, "login":"*******", "password":"********", "webauthn-support":"supported" } session_res=requests.post(url=session_url,headers=session_headers, cookies=login_cookies,data=form_data) with open('github1.html','w',encoding='utf-8') as f: f.write(session_res.text)
实验结果: