day01 初见python爬虫之“爬校花网”和“自动登录github”
首先我们来解释一下几个概念:
1、什么是爬虫?
爬取数据。
2、什么是互联网?
由一堆网络设备、把一台台的计算机互联到一起称之为互联网。
3、互联网建立的目的:
数据的传递与数据的共享。
4、什么是数据?
列如:
电商平台的商品信息(京东、淘宝、亚马逊)
租房平台的房源信息(链家、自如)
股票证券的投资信息(东方财富、雪球网)
12306的票务信息(抢票)
5、什么是上网?
普通用户:
打开浏览器————>输入网址————>往目标主机发送请求————>返回响应数据————>把数据渲染到浏览器中
爬虫程序:
模拟浏览器————>往目标主机发送请求————>返回响应数据————>解析并提取有价值的数据————>保存数据(文件写入本地,持久化到数据库中)
6、爬虫的全过程
- 1)发送请求(请求库:Requests/Selenium)
- 2)获取响应数据
- 3)解析数据(解析库:BeautifulSoup4)
- 4)保存数据(存储库:文件保存、MongoDB)
总结:我们互联网的数据比喻成一座宝藏,爬虫就是在挖取宝藏。
我们爬虫要用到的requests请求库:
安装:
pip3 install requests
每次使用的时候在代码前面加上
import requests
举例:
一、爬“校花网”
为了增加我们学习的动力,我们先来爬点视频。
找到校花网的主页url:
http://www.xiaohuar.com/list-3-0.html
找到每个视频详情页的url(通过谷歌浏览器检查的方式(.*?)使用了正则表达式):
<div class="items"><a class="imglink" href="(.*?)"
找到视频的源地址的url:
<source src="(.*?)">
三个函数:
发送请求:
def get_page(url):response = requests.get(url)return response
解析数据:
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)if movie_url:return movie_url[0]
保存数据:
import uuid def save_video(content):with open(f'{uuid.uuid4()}.mp4','wb') as f:f.write(content)print('视频下载完毕...请客人观赏!!!')
附上所有代码:
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)if movie_url:return movie_url[0]# 3 保存数据 import uuid def save_video(content):with open(f'{uuid.uuid4()}.mp4','wb') as f:f.write(content)print('视频下载完毕...请客人观赏!!!')# 测试用例 if __name__ == '__main__':for line in range(6):url = f'http://www.xiaohuar.com/list-3-{line}.html'# 发送请求response = get_page(url)# 解析主页页面detail_urls = parse_index(response.text)# 循环遍历详情页urlfor detail_urls in detail_urls:# 往每一个详情页发送请求detail_res = get_page(detail_urls)# 解析详情页获取视频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
1 访问登录界面获取token随机字符串 请求url: https://github.com/login 请求方式: GET 请求头: COOKIES User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.362 解析并提取token字符串# 正则<input type="hidden" name="authenticity_token" value="(.*?)"
import requests import re login_url = 'https://github.com/login' login_header = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36' } login_res = requests.get(url=login_url, headers=login_header)# 解析提取token字符串 authenticity_token = re.findall('<input type="hidden" name="authenticity_token" value="(.*?)"',login_res.text,re.S )[0] print(authenticity_token)# 获取login页面的cookies信息 login_cookies = login_res.cookies.get_dict()
2 开始登录githubPOST请求自动登录github:请求方式: POST请求URL: https://github.com/session请求头: Cookie User-agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36请求体: commit: Sign in utf8: ✓ authenticity_token: FbwwBOSWi3OrjoT7vmkyVnCruAAMEYkuT4AZcH9U6prQGQh5LLO9j0E8CeCUiP94oyQ/RwReQ81fDwfxWUa+sw== login: ******** password: ******* webauthn-support: supported
# 请求url session_url = 'https://github.com/session' # 请求头信息 session_headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) 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": "*******","password": "********","webauthn-support": "supported" }session_res = requests.post(url=session_url,headers=session_headers,cookies=login_cookies,data=form_data )with open('github.html', 'w', encoding='utf-8') as f:f.write(session_res.text)
其中******改成自己的github账号和密码,请求头信息和请求体信息通过浏览器的检查方式查看。
附上所有代码:
import requests import re login_url = 'https://github.com/login' login_header = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36' } login_res = requests.get(url=login_url, headers=login_header)# 解析提取token字符串 authenticity_token = re.findall('<input type="hidden" name="authenticity_token" value="(.*?)"',login_res.text,re.S )[0] print(authenticity_token)# 获取login页面的cookies信息 login_cookies = login_res.cookies.get_dict()# 请求url session_url = 'https://github.com/session'# 请求头信息 session_headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) 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": "*******","password": "*******","webauthn-support": "supported" }session_res = requests.post(url=session_url,headers=session_headers,cookies=login_cookies,data=form_data )with open('github.html', 'w', encoding='utf-8') as f:f.write(session_res.text)
转载于:https://www.cnblogs.com/yjg6/p/11114036.html
day01 初见python爬虫之“爬校花网”和“自动登录github”相关推荐
- Python爬虫深入 爬取当当网商品基本信息
Python爬虫深入 爬取当当网商品基本信息 使用scrapy爬虫框架,创建爬虫项目. 基本命令: scrapy startproject dangdang scrapy genspider -l s ...
- python爬虫之--爬取当当网商品信息
python爬虫之--爬取当当网图商品信息 ...
- python爬校花网笔记
import requests import re #正则表达式 from bs4 import BeautifulSoup #爬虫bs4 import os #爬高考校花网 def xiaohua( ...
- python爬虫之爬取百度网盘
爬虫之爬取百度网盘(python) #coding: utf8 """ author:haoning create time: 2015-8-15 "" ...
- python 爬虫之爬取大街网(思路)
由于需要,本人需要对大街网招聘信息进行分析,故写了个爬虫进行爬取.这里我将记录一下,本人爬取大街网的思路. 附:爬取得数据仅供自己分析所用,并未用作其它用途. 附:本篇适合有一定 爬虫基础 crawl ...
- python爬虫案例-爬取当当网数据
输入关键字,爬取当当网中商品的基本数据,代码如下: 1 # Author:K 2 import requests 3 from lxml import etree 4 from fake_userag ...
- Python爬虫 离线爬取当当网畅销书Top500的图书信息
本实例还有另外的在线爬虫实现,有兴趣可点击在线爬取当当网畅销书Top500的图书信息 爬虫说明 1.使用requests和Lxml库爬取,(用BS4也很简单,这里是为了练习Xpath的语法) 2.爬虫 ...
- Python爬虫 在线爬取当当网畅销书Top500的图书信息
本实例还有另外的离线爬虫实现,有兴趣可点击离线爬取当当网畅销书Top500的图书信息 爬虫说明 1.使用requests和Lxml库爬取,(用BS4也很简单,这里是为了练习Xpath的语法) 2.爬虫 ...
- python爬虫,爬起点小说网小说
说明哦!不能爬vip章节只能爬可见的,@_@技术不够__ 首先就是python模块: import requests # 这个就是爬虫模块哦 from lxml import etree #是一个py ...
最新文章
- 智能车竞赛技术报告 | 智能车视觉 - 青岛科技大学 - 飞猪
- 银行委托第三方催收信用卡欠款,是合法吗?
- vs用c语言写贪吃蛇,熬书几个月,终于编出简易的贪吃蛇了,VS2013
- 【数学】Floating-Point Hazard
- c语言编程被当作病毒,为什么这个微不足道的C程序被检测为病毒?
- Python内置函数(49)——isinstance
- 容器编排技术 -- 使用Minikube 部署 Kubernetes 集群
- go 根据输入类型执行对应的方法_Go 每日一库之 sqlc
- 软件测试从业 3 年+了,怎么兼顾 管理 与 自身成长?
- angular发布代码有缓存_如何在Angular应用程序中执行请求?
- 最长双重叠字符串java_java – 重复但重叠的字符串的算法
- k2p官方改版固件v2.2
- 李永乐线性代数辅导讲义第四章学霸小结
- Matlab fftshift and ifftshift and some confusions
- 客户说发货慢怎么回复_物流走件慢回复话术
- react-router-dom文档
- python颜色代码棕色_图表的基本配色方法
- 输入经纬度在地图中标注位置(百度地图)
- 用CSS添加鼠标样式-箭头、小手、十字 CSS实现虚线之dotted边框-点虚线、dashed边框-破折号虚线
- 【经典算法】:银行金额大写转换