python爬虫小样例

好久没更新了,网课在家的学习状态越来越差,到考试周了,还有好多好多事情没有完成,最近几天压力是真大。

言归正传,前几天又去把python的爬虫“复习”了一遍(要是正课也有这个自觉性就好了),我一开始想的是写一个每天提醒我干某某事的小脚本,终于学会咋写了,但我又想不出来写这玩意干啥,有点鸡肋,没啥要提醒我的呀(除了星期五的汇编课后总结)

样例1:2020华师大计算机专业拟录取名单爬取

先上代码:

import requests
import openpyxl
from bs4 import BeautifulSoup
headers={}#请求头自行填写
url=''#url在官网中,可自行去找
res=requests.get(url,headers=headers,verify=False)
res.encoding='gb18030'#要转换编码,因为编码问题我一开始爬取的中文信息全是乱码
print(res.status_code)
soup=BeautifulSoup(res.text,'html.parser')
items=soup.find_all('td')#通过F12,发现要找的信息大都在td标签中
wb=openpyxl.Workbook()#新建一个excel,最后将结果保存在excel中
sheet=wb.active
sheet.title='new title'
rows=[]
rows.append([])
cnt=0
u=0
e=0
for item in items:
    u+=1
    if(u>=4):#前四个td标签中的信息没啥用,这里直接略过
        rows[e].append(item.text)
        cnt+=1
        if(cnt==14):
            cnt=0
            e+=1
            rows.append([])
for row in rows:
    sheet.append(row)
wb.save('Marvel.xlsx')#最后保存excel文件

效果图片:

样例2:利用扇贝实现单词检测小程序

先上代码:

#单词检测源码
import requests
headers={}#请求头自行填写
print("1.DMAT",'\t',"2.考研",'\t',"3.高考",'\t',"4.四级",'\t',"5.六级",'\t',"6.英专",'\t',"7.托福",'\t',"8.GRE",'\t',"9.雅思",'\t',"10.任意",end='\n')
sel=int(input('请选择出题范围:'))
sel-=1
res=requests.get('https://www.shanbay.com/api/v1/vocabtest/category/?_=1590569554908',headers=headers)
js=res.json()
selcet=js['data']
typ=selcet[sel][0]#获得出题范围
res=requests.get('https://www.shanbay.com/api/v1/vocabtest/vocabularies/?category={}&_=1590569565325'.format(typ),headers=headers)
js=res.json()
wordall=js['data']
cnt=0
knowcnt=0#认识单词的数量
unknowcnt=0#不认识单词的数量
kword=[]#认识的单词
ukword=[]#不认识的单词
for word in wordall:
        cnt+=1
        print(cnt,end='.\t')
        print(word['content'],end='\t')
        u=input('是否认识这个单词,认识输入y,不认识输入n:')
        if(u=='y'):
                knowcnt+=1
                kword.append(word)
        if(u=='n'):
                unknowcnt+=1
                ukword.append(word)
print("------------------------------------------------------------------------")
rightcnt=0
wrongcnt=0
cnt=0
for word in kword:
        cnt+=1
        print(cnt,'. ',word['content'])
        print('A.',word['definition_choices'][0]['definition'])
        print('B.',word['definition_choices'][1]['definition'])
        print('C.',word['definition_choices'][2]['definition'])
        print('D.',word['definition_choices'][3]['definition'])
        xx=input('请选择你认为正确的选项:')
        dic={'A':word['definition_choices'][0]['pk'],'B':word['definition_choices'][1]['pk'],'C':word['definition_choices'][2]['pk'],'D':word['definition_choices'][3]['pk']}
        if(dic[str(xx)]==word['pk']):
                rightcnt+=1
        else:
                wrongcnt+=1
print('------------------------------------------------------------------------')
print('共50个单词')
print('认识单词数:',knowcnt)
print('不认识单词数:',unknowcnt)
print('掌握单词数:',rightcnt)
print('错误:',wrongcnt)

效果图片:

这个代码还待完善,还没有异常处理,如果输错了一个数就需要重新运行了

样例3:蓝墨云班课新任务邮件提醒

待更新~~~

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注