首先我们来解释一下几个概念:

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”相关推荐

  1. Python爬虫深入 爬取当当网商品基本信息

    Python爬虫深入 爬取当当网商品基本信息 使用scrapy爬虫框架,创建爬虫项目. 基本命令: scrapy startproject dangdang scrapy genspider -l s ...

  2. python爬虫之--爬取当当网商品信息

                                    python爬虫之--爬取当当网图商品信息                                               ...

  3. python爬校花网笔记

    import requests import re #正则表达式 from bs4 import BeautifulSoup #爬虫bs4 import os #爬高考校花网 def xiaohua( ...

  4. python爬虫之爬取百度网盘

    爬虫之爬取百度网盘(python) #coding: utf8 """ author:haoning create time: 2015-8-15 "" ...

  5. python 爬虫之爬取大街网(思路)

    由于需要,本人需要对大街网招聘信息进行分析,故写了个爬虫进行爬取.这里我将记录一下,本人爬取大街网的思路. 附:爬取得数据仅供自己分析所用,并未用作其它用途. 附:本篇适合有一定 爬虫基础 crawl ...

  6. python爬虫案例-爬取当当网数据

    输入关键字,爬取当当网中商品的基本数据,代码如下: 1 # Author:K 2 import requests 3 from lxml import etree 4 from fake_userag ...

  7. Python爬虫 离线爬取当当网畅销书Top500的图书信息

    本实例还有另外的在线爬虫实现,有兴趣可点击在线爬取当当网畅销书Top500的图书信息 爬虫说明 1.使用requests和Lxml库爬取,(用BS4也很简单,这里是为了练习Xpath的语法) 2.爬虫 ...

  8. Python爬虫 在线爬取当当网畅销书Top500的图书信息

    本实例还有另外的离线爬虫实现,有兴趣可点击离线爬取当当网畅销书Top500的图书信息 爬虫说明 1.使用requests和Lxml库爬取,(用BS4也很简单,这里是为了练习Xpath的语法) 2.爬虫 ...

  9. python爬虫,爬起点小说网小说

    说明哦!不能爬vip章节只能爬可见的,@_@技术不够__ 首先就是python模块: import requests # 这个就是爬虫模块哦 from lxml import etree #是一个py ...

最新文章

  1. 智能车竞赛技术报告 | 智能车视觉 - 青岛科技大学 - 飞猪
  2. 银行委托第三方催收信用卡欠款,是合法吗?
  3. vs用c语言写贪吃蛇,熬书几个月,终于编出简易的贪吃蛇了,VS2013
  4. 【数学】Floating-Point Hazard
  5. c语言编程被当作病毒,为什么这个微不足道的C程序被检测为病毒?
  6. Python内置函数(49)——isinstance
  7. 容器编排技术 -- 使用Minikube 部署 Kubernetes 集群
  8. go 根据输入类型执行对应的方法_Go 每日一库之 sqlc
  9. 软件测试从业 3 年+了,怎么兼顾 管理 与 自身成长?
  10. angular发布代码有缓存_如何在Angular应用程序中执行请求?
  11. 最长双重叠字符串java_java – 重复但重叠的字符串的算法
  12. k2p官方改版固件v2.2
  13. 李永乐线性代数辅导讲义第四章学霸小结
  14. Matlab fftshift and ifftshift and some confusions
  15. 客户说发货慢怎么回复_物流走件慢回复话术
  16. react-router-dom文档
  17. python颜色代码棕色_图表的基本配色方法
  18. 输入经纬度在地图中标注位置(百度地图)
  19. 用CSS添加鼠标样式-箭头、小手、十字 CSS实现虚线之dotted边框-点虚线、dashed边框-破折号虚线
  20. 【经典算法】:银行金额大写转换

热门文章

  1. 学会这3个小技巧,轻松去图片水印
  2. 遗失声明登报 登报挂失 证件登报
  3. 电视接口的AV,S端子,色差,VGA,DVI区别
  4. 实时级嵌入式系统半实物仿真测试平台技术指标
  5. 李开复-做最好的自己
  6. 「 Dart 」一文了解 Dart 基础知识
  7. 微机原理笔记——数据传送指令
  8. lpc2148烧写hex文件到单片机
  9. 程序人生(二)在这个信息爆炸的时代程序员怎么去学习
  10. 孩子叛逆期不想上学怎么办