一、引言
大学英语学习需要巩固高中语法,补充四六级词汇,增加英语语感,提升英语的运用能力。学好英语有很多种方法,采用句子来突破英语语法、词汇、口语和听力的方法简单有效,值得提倡。李阳就是采用这种方法来教授英语的,所以我也想选取一些地道的句子来进行英语学习,那么网上众多的每日一句就是我们要学习的对象了。但是这些每日一句分布在不同的网址,有的还网页打开速度还比较慢,有没有快一点儿的方法,一下就可以获取这些句子呢?
二、问题分析
如果想爬取这些英语句子,并打印出来,肯定要用到爬虫。
当然,除了使用request和Beautifulsoup这些模块还是远远不够的,我们还要发请求时加上headers进行伪装。下面我们就以三个网站为例来说明一下如何爬取这些每日一句。
1. 爬取insightoftheday
这是一个国外的站点,每天都会发一些精美的图片配上名言佳句,还注释有出处,语句非常励志,质量也很高。要爬取这个网站上的内容也不难,可以采用以下代码。为了简单起见,我们使用了正则表达式,利用re.findall来查找我们需要的每日一句,然后再切片提取,这样大大地简化了我们的爬取过程。
import requests,re
url = "https://www.insightoftheday.com/?page=2"
headers = {'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36'
}
resp = requests.get(url,headers = headers)
quote = re.findall(r'</span>(.*?)<span style=',resp.text)
print(quote[0])
2. 爬取国内某词典网站
国内的网站访问的速度比较快,还配有中英文。而且,甚至不用伪装就可以轻松爬取下来。
import requests
url = 'http://open.iciba.com/dsapi/'
res = requests.get(url)
content = res.json()['content'] + res.json()['note']
3. 爬取国内某英语学习网站
同样道理,我们爬取另一个网站,同样也不用伪装即可爬取
url2=r"https://dict.cn"
resp = requests.get(url2)
soup = BeautifulSoup(resp.text,"html.parser")
htm=soup.find("div",class_="daily_sentence")
sen=htm.text.strip().split("\t\t\t")[2] #split("\n\t")[2].strip()
print(sen)
4. 整合上面代码做一个群发软件
我们利用tkinter框架,借助wxauto这个包来做一个每日一句群发软件。功能是通过导入包含有发送对象名字的txt文件,然后,选中一个或多个每日一句,然后点获取句子,最后再点开始发送,即可把每日一句发给指定的用户。软件的界面如下:
源码下载地址:https://download.csdn.net/download/henanlion/89949404?spm=1001.2014.3001.5503
群发软件界面
三、学后总结
1. 有了三个网站的源码,我们就可以把它们整合在一起,然后只用轻轻一点,就可以查看每日一句。
2. 我们还可以加上批量发送邮件、发到指定微信群等功能,让我们的每日一句让更多的人看到。