Python導入beautifulsoup包後,先要使用html.parser進行解析,解析結果放入soup或者其他的的變量裏。 1、最喜歡用裏面的select語句,#表示選擇所有的class等於,.表示選擇所有的id等於,>表示子標籤 2、選擇標籤裏面的內容需要使用.text,使用.strip()函數是去掉所有的選擇內容的空格,好東西啊。 3、.get('name')是選取裏面的name屬性等於的值。 soup = BeautifulSoup(r.text,"html.parser") print(soup.select('#top1-1 > label')[0].text.strip())
# -*- coding: utf-8 -*-
import requests
#159中醫選修,160中醫必修,163護理必修,164護理選修,165中藥必修,158金匱要略
from bs4 import BeautifulSoup
#組裝課程狀態,匹配課程號,獲得最終課程號
def getId(x):
titlelist=[]
titlelist1=[]
taskID=[]
statelist=[]
urls={
159:"http://www.tcmce.cn/member/taskList.shtml?newId=159&memberId="+x,
160:"http://www.tcmce.cn/member/taskList.shtml?newId=160&memberId="+x,
163:"http://www.tcmce.cn/member/taskList.shtml?newId=163&memberId="+x,
164:"http://www.tcmce.cn/member/taskList.shtml?newId=164&memberId="+x,
165:"http://www.tcmce.cn/member/taskList.shtml?newId=165&memberId="+x,
158:"http://www.tcmce.cn/member/taskList.shtml?newId=158&memberId="+x,
126:"http://www.tcmce.cn/member/taskList.shtml?newId=126&memberId="+x,
125:"http://www.tcmce.cn/member/taskList.shtml?newId=125&memberId="+x,
000:"http://www.tcmce.cn/welcome.shtml?memberId="+x
}
print('159中醫選修,160中醫必修,163護理必修,164護理選修,165中藥必修,158金匱要略,126 15-16年中醫必修,125 16-17中醫必修')
newid=int(input('請輸入序列號'))
url=urls[newid]
r=requests.get(url)
if newid==000:
soup = BeautifulSoup(r.text,"html.parser")
print(soup.select('#top1-1 > label')[0].text.strip())
for i in soup.select('.xxjl a'):
print(i.text.strip())
print(r.url)
#獲取視頻列表和學習狀態
soup = BeautifulSoup(r.text,"html.parser")
name=soup.select('.kc-block2-1-left h1 a')
state=soup.select('.kc-block2-1-right span')
for state in state:
statelist.append(state.string)
for n in range(0,len(name),2):
print(name[n],statelist[n//2])
for j in soup.select('.kc-block2-1-left h1 a[href="javaScript:void(0)"]'):
titlelist.append(j.get('name'))
for j in range(0,len(statelist)):
if statelist[j]=='學習中' or statelist[j]=='未學習':
titlelist1.append(titlelist[j])
#獲取未學習的視頻號碼
for i in titlelist1:
url1="http://www.tcmce.cn/member/study."+i[7:]+"&newId=160&flag=1&memberId="+x
r=requests.get(url1)
ID = BeautifulSoup(r.text,"html.parser")
taskID.append(ID.select('#TaskMemberId')[0].get('value'))
print(taskID)
return taskID,newid
#獲得用戶名、密碼組合的cookie
def copy(s,str1,str2):
a=0
b=0
name=[]
for i in range(0,len(s)):
if str1==s[i:i+len(str1)]:
a=i+len(str1)
for z in range(a,len(s)):
if str2==s[z:z+len(str2)]:
name.append(s[a:z])
break
return name
#登陸獲得cookie
def login(user,password):
params1={
'baseCode':'1149',
'loginName':'1000022217',
'password':'000000',
'validatecode':1149
}
params1['loginName']=user
params1['password']=password
url1 = 'http://www.tcmce.cn/login.shtml'
try:
r = requests.post(url=url1,params=params1,timeout=5)
str1="memberId','"
str2="')"
return copy(r.text,str1,str2)[0]
except:
print("shibai")
params={
'id':'4099794',
'memberId':'39B926633E0392FC'
}
#main程序
user=input("請輸入用戶名")
password=input("請輸入密碼")
cookie=login(user,password)
while 1:
Id,newid=getId(cookie)
params['memberId']=cookie
select=input("是不是全部看完:")
if select =="是":
for i in Id:
params['id']=i
r=requests.get("http://www.tcmce.cn/member/updateMemberTaskById.do?",params=params)
print(r.text)
print("全部看完了")
#需要拿證書麼?
else:
while 1:
select1=input("請輸入要看完的號:")
params['id']=Id[int(select1)-1]
r=requests.get("http://www.tcmce.cn/member/updateMemberTaskById.do?",params=params)
print(r.text)
#需要拿證書麼?
if input('需要證書麼') =='是':
lurl='http://www.tcmce.cn/member/reqCeart.shtml?'
data={'taskId':'1911',
'pagerId':'1152910',
'memberId':cookie,
'newId':newid}
r=requests.get(url=lurl,params=data)
print(r.url,r.text)