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)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值