學校課程表爬取
庫
import re
import time #time.sleep()
import requests
from bs4 import BeautifulSoup
import xlwt
re的作用:
pattern=re.compile(r’正規表示式’) #編寫正規表示式
s=re.search(pattern,str) #將結果存入s
注意s.group(0)是整個整體
s.group(1)是對應的第一個空
time的作用:
time.sleep() 讓搜尋稍微停一下,不要讓伺服器察覺你是個爬蟲
requests的作用:
用於建立session物件
session = requests.session()
session(會話控制)會找伺服器臨時創造出一個空間,來儲存資料
有點類似函式中的形參
理解:一個session多次操作相當於一個人做了多件事情
而如果來讓request來做的話,相當於多個人做了各自的事
xlwt的作用:
用來將資料存入表格
基本工作準備
link = 'http://jwch.fzu.edu.cn/login.aspx' #登入介面的網址
headers={
'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
'User-Agent':
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36',
'Accept-Language': 'zh,zh-CN;q=0.9',
'Accept-Encoding': 'gzip, deflate',
'Referer':'http://jwch.fzu.edu.cn/'
}
#要明確找到的鍵
login_data={
'muser':'使用者名稱',
'passwd':'密碼' #密碼寫錯的話後面是跳不出id號的
}
#要跳轉的網站,在form表單中的action中找到
post_url="http://59.77.226.32/logincheck.asp"
f12開發者人員工具(或右鍵點檢查)
難題:muser和passwd要找的對,先留個坑
頭儘量寫滿(留個坑)
坑點:頭的選擇
response headers、request headers
request相當於向伺服器提出求婚
response相當於問伺服器是否還要保持曖昧關係
新增連結描述
尋找id
#要跳轉的網站,在form表單中的action中找到
post_url="http://59.77.226.32/logincheck.asp"
#建立session物件
session = requests.session()
#有狀態頭和資料向post_url伺服器發出post請求
s=session.post(post_url, headers = headers,data = login_data)
# print(s)
# print(s.url)
# print(type(s))
# print(type(s.url))
#
# #<Response [200]>
# #<class 'requests.models.Response'>
# #<class 'str'>
#用正則找id,用正則找id,用正則找id
id_loc =re.search(r'.*id=([0-9]*)',s.url)
id=id_loc.group(1)
#group(0)是整個id_loc一起輸出來
real_url="http://59.77.226.35/right.aspx?id="+id
message = session.get(real_url,headers=headers)
#print(message.text)
表格儲存
book = xlwt.Workbook(encoding="utf-8", style_compression=0) # 方式壓縮
sheet = book.add_sheet("福大課程表", cell_overwrite_ok=True) # cell是細胞,是單元,後面的引數是用來允許覆蓋
col = ("節次", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日")
for i in range(0,8):
sheet.write(0,i,col[i])
row = ("8:20-9:05","9:15-10:00","10:20-11:05","11:15-12:00","14:00-14:45","14:55-15:40","15:50-16:35","16:45-17:30")
for i in range(1,9):
sheet.write(i,0,row[i-1])
x=0
y=0
course_pattern=r'<font color.*?>(.*?)</font>'
for courses in soup.find_all('td',align='center', bgcolor='#FFFFFF'):
print(courses)
if courses.font !=None:
single_course=re.search(course_pattern,str(courses.font)).group(1)
sheet.write(y,x-1,str(single_course))#多了一列上午下午所以要減一
x = x + 1
if (x % 8 == 0):
x = x % 8
y = y + 1
book.save("福大課程11445.xls")
寫到一半的selenium
from selenium import webdriver
import time
from bs4 import BeautifulSoup
import requests
import re
import json
##基礎準備
session = requests.Session()
#填寫賬號密碼
login_username = "賬號"
login_passdord = "密碼"
headers={
'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
'User-Agent':
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36',
'Accept-Language': 'zh,zh-CN;q=0.9',
'Accept-Encoding': 'gzip, deflate',
"Referer":"http://jwch.fzu.edu.cn/",
"Cookie": "ASP.NET_SessionId=oribitksc1ffqzgekdoxivx1"
}
print(type(headers))
session.headers.update(headers)#儲存頭
browser = webdriver.Chrome()#瀏覽器
login_site="http://jwch.fzu.edu.cn/login.aspx"#登入網站
browser.get(login_site)#登入網站
#找到使用者名稱並輸入
username = browser.find_element_by_id("UserName")
username.send_keys(login_username)
time.sleep(0.2)
#找到密碼名並輸入
password = browser.find_element_by_id("passWord")
password.send_keys(login_passdord)
time.sleep(0.2)
#點選確認
submit=browser.find_element_by_class_name("btn.fl")
submit.click()
#解析
soup =BeautifulSoup(browser.page_source,"html.parser")
#正則,搜尋id號
find = re.search(r'.*id=([0-9]*)', str(soup))
#進入異空間,失敗
r = requests.get("http://59.77.226.35/right.aspx?id="+find.group(1),headers=headers)
print(r.text)```
還有很多瑕疵,寒假再戰
相關文章
- Python爬蟲實戰一:爬取csdn學院所有課程名、價格和課時Python爬蟲
- 網校系統開發:網校平臺搭建的課程表現形式
- 教你爬取騰訊課堂、網易雲課堂、mooc等所有課程資訊
- unity3d學校的課程內容有哪些?Unity3D
- --查詢班級表、課程表、學生選課表、學生表、成績表、15(3+2)計算
- 207. 課程表
- 實用爬蟲-03-爬取視訊教程課程名+連結+下載圖片爬蟲
- PYTHON openpyxl 讀取課程表,輪值排班表,輸出每日班級簡報Python
- LeetCode 207. 課程表(Medium)LeetCode
- 教學課程安排
- CSDN學院:24門精品課程免費領取(含Python+人工智慧等專題課程)Python人工智慧
- 必看,經典sql面試題2(學生表_課程表_成績表_教師表)SQL面試題
- 必看,經典sql面試題1(學生表_課程表_成績表_教師表)SQL面試題
- [爬蟲] 利用 Python 的 Selenium 庫爬取極客時間付費課程並儲存為 PDF 檔案爬蟲Python
- 3.25 建立報名表和課程表
- Censuswide:2024年75%英國學生支援將電競納入校園課程IDE
- 數學課程目錄
- 學校上課,是耽誤我學習了。。
- 中公網校影片課件課程下載工具,如何在電腦端下載中公網校影片課件資料到本地?
- 耀中耀華教育網路在港承辦首所內地課程學校
- LeetCode題解(0210):課程表II(Python)LeetCodePython
- python爬蟲——爬取大學排名資訊Python爬蟲
- 課程設計:python_網路爬蟲專案Python爬蟲
- 學成線上-課程安排
- lua課程學習筆記筆記
- 如何高效學習java課程Java
- 會計學課程筆記筆記
- 【課程學習】課程2:十行程式碼高效完成深度學習POC行程深度學習
- 小白學 Python 爬蟲(25):爬取股票資訊Python爬蟲
- 日程表、學生課表外掛
- Python爬取B站影片 抓包過程分享Python
- 淘寶美工學什麼課程?
- 課程-計算機語言學計算機
- 達內課程學習筆記筆記
- 機器學習課程筆記機器學習筆記
- python爬蟲學習01--電子書爬取Python爬蟲
- Python爬蟲入門教程 21-100 網易雲課堂課程資料抓取Python爬蟲
- 力扣刷題筆記:207. 課程表力扣筆記