Python使用bs4的beautifulsoup學習記錄

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)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章