day 01 python爬虫原理
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                day 01   python爬虫原理
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.                        
                                
                            
                            
                            # 今日內(nèi)容:爬蟲原理
# 爬蟲課程:
# 實(shí)訓(xùn)要求:
# 一 課下寫作業(yè)
# 二 編寫博客
# 一 爬蟲基本原理
# 1 什么是爬蟲
# 爬蟲就是爬數(shù)據(jù)
# 2 是什么互聯(lián)網(wǎng)
# 3 互聯(lián)網(wǎng)建立的目的
# 數(shù)據(jù)的傳遞與數(shù)據(jù)的共享
# 4 什么是數(shù)據(jù)
# 電商平臺的商品信息(淘寶,京東,亞馬遜)
# 鏈家,自如(租房平臺的房源信息)
# 股票證券投資信息(東方財(cái)富)
# 5 什么是上網(wǎng)
# 普通用戶:
# 打開瀏覽器--->輸入網(wǎng)址
# --->往目標(biāo)主機(jī)發(fā)送請求
# 爬蟲三部曲
# 爬取?;ㄒ暺辆W(wǎng)
# 一 請求url
# 二 請求方式
# 三 請求頭信息
import requests
# 1,發(fā)送請求
def get_page(url):
response =requests.get(url)
return response
# 2,解析數(shù)據(jù)
import re
def parse_index(html):
# findall匹配所有
# re.findall('正則匹配規(guī)則','匹配文本','匹配模式')
# re.S(對全部文本進(jìn)行搜索匹配)
detail_urls=re.findall('<div class="items"><a class="imglink" href="(.*?)"',html,re.S)
print(detail_urls)
# 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)
# print(movie_url)
if movie_url:
return movie_url[0]
# 3,保存數(shù)據(jù)
# import uuid
# # uuid.uuid4()根據(jù)時間戳生成一段世界上唯一的字符串
# 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'
# 發(fā)送請求
response=get_page(url)
# print(response)
# 返回響應(yīng)狀態(tài)碼
# print(response.status_code)
# 返回響應(yīng)文本
# print(response.text)
# 解析主頁頁面
detail_urls=parse_index(response.text)
# 循環(huán)遍歷詳情頁 url
for detail_url in detail_urls:
# print(detail_url)
# 往每一個詳情頁發(fā)送請求
detail_res=get_page(detail_url)
# print(response.text)
# 解析詳情頁獲取視頻url
# print(detail_res)
movie_url=parse_detail(detail_res.text)
# 判斷視頻url存在則打印
if movie_url:
print(movie_url)
# 往視頻url發(fā)送請求獲取視頻二進(jìn)制流
movie_res=get_page(movie_url)
# 把視頻的二進(jìn)制流傳給save——video的函數(shù)取保存到本地
save_video(movie_res.content)
# post請求自動登錄github
# 請求url
# https://github.com/session
# 請求方式
# post
# 請求頭
# Cookie
# 請求體
# commit: Sign in
# utf8: ?
# authenticity_token: <input type="hidden" name="authenticity_token" value="" />
# login: qweqwe
# password: qweqweqw
# webauthn-support: supported
# 1,訪問登陸頁面獲取token隨機(jī)字符串
# 請求url
# https://github.com/login
# 請求方式
# get
# 請求頭
# COOKIES
# Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 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 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)
# 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.get_dict()))
login_cookie=login_res.cookies.get_dict()
# session登錄url
session_url='https://github.com/session'
# 請求頭信息
session_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'
}
# 請求體信息
form_data={
"commit": "Sign in",
"utf8": "?",
"authenticity_token":authenticity_token,
"login": "RuiZinb",
"password": "Pig,1574140397",
"webauthn-support": "supported"
}
session_res=requests.post(url=session_url,
headers=session_header,
cookies=login_cookie,
data=form_data
)
with open('github3.html','w',encoding='utf-8')as f:
f.write(session_res.text)
                        
                        
                        # 爬蟲課程:
# 實(shí)訓(xùn)要求:
# 一 課下寫作業(yè)
# 二 編寫博客
# 一 爬蟲基本原理
# 1 什么是爬蟲
# 爬蟲就是爬數(shù)據(jù)
# 2 是什么互聯(lián)網(wǎng)
# 3 互聯(lián)網(wǎng)建立的目的
# 數(shù)據(jù)的傳遞與數(shù)據(jù)的共享
# 4 什么是數(shù)據(jù)
# 電商平臺的商品信息(淘寶,京東,亞馬遜)
# 鏈家,自如(租房平臺的房源信息)
# 股票證券投資信息(東方財(cái)富)
# 5 什么是上網(wǎng)
# 普通用戶:
# 打開瀏覽器--->輸入網(wǎng)址
# --->往目標(biāo)主機(jī)發(fā)送請求
# 爬蟲三部曲
# 爬取?;ㄒ暺辆W(wǎng)
# 一 請求url
# 二 請求方式
# 三 請求頭信息
import requests
# 1,發(fā)送請求
def get_page(url):
response =requests.get(url)
return response
# 2,解析數(shù)據(jù)
import re
def parse_index(html):
# findall匹配所有
# re.findall('正則匹配規(guī)則','匹配文本','匹配模式')
# re.S(對全部文本進(jìn)行搜索匹配)
detail_urls=re.findall('<div class="items"><a class="imglink" href="(.*?)"',html,re.S)
print(detail_urls)
# 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)
# print(movie_url)
if movie_url:
return movie_url[0]
# 3,保存數(shù)據(jù)
# import uuid
# # uuid.uuid4()根據(jù)時間戳生成一段世界上唯一的字符串
# 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'
# 發(fā)送請求
response=get_page(url)
# print(response)
# 返回響應(yīng)狀態(tài)碼
# print(response.status_code)
# 返回響應(yīng)文本
# print(response.text)
# 解析主頁頁面
detail_urls=parse_index(response.text)
# 循環(huán)遍歷詳情頁 url
for detail_url in detail_urls:
# print(detail_url)
# 往每一個詳情頁發(fā)送請求
detail_res=get_page(detail_url)
# print(response.text)
# 解析詳情頁獲取視頻url
# print(detail_res)
movie_url=parse_detail(detail_res.text)
# 判斷視頻url存在則打印
if movie_url:
print(movie_url)
# 往視頻url發(fā)送請求獲取視頻二進(jìn)制流
movie_res=get_page(movie_url)
# 把視頻的二進(jìn)制流傳給save——video的函數(shù)取保存到本地
save_video(movie_res.content)
# post請求自動登錄github
# 請求url
# https://github.com/session
# 請求方式
# post
# 請求頭
# Cookie
# 請求體
# commit: Sign in
# utf8: ?
# authenticity_token: <input type="hidden" name="authenticity_token" value="" />
# login: qweqwe
# password: qweqweqw
# webauthn-support: supported
# 1,訪問登陸頁面獲取token隨機(jī)字符串
# 請求url
# https://github.com/login
# 請求方式
# get
# 請求頭
# COOKIES
# Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 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 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)
# 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.get_dict()))
login_cookie=login_res.cookies.get_dict()
# session登錄url
session_url='https://github.com/session'
# 請求頭信息
session_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'
}
# 請求體信息
form_data={
"commit": "Sign in",
"utf8": "?",
"authenticity_token":authenticity_token,
"login": "RuiZinb",
"password": "Pig,1574140397",
"webauthn-support": "supported"
}
session_res=requests.post(url=session_url,
headers=session_header,
cookies=login_cookie,
data=form_data
)
with open('github3.html','w',encoding='utf-8')as f:
f.write(session_res.text)
轉(zhuǎn)載于:https://www.cnblogs.com/RuiZi/p/11114023.html
總結(jié)
以上是生活随笔為你收集整理的day 01 python爬虫原理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 【转】开源机器学习之RWeka
- 下一篇: Postgresql 物理热备份 --
