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)