前言:我的第一篇博客,本人大一菜鸟一枚,第一次写python的项目,需要大量的数据,第一次接触爬虫这个东西,感觉十分有趣,想以后往这方面发展,特写下自己的爬虫学习经历,希望把自己的学习经历分享给初学者们,也希望各位大佬帮助指正。声明:没有使用多线程,没有使用代理IP,没有使用框架,最简单的一个爬虫爬到死
python版本:python3.6
使用requests库爬取,使用beautifulsoup库解析(使用了一点点正则表达式)
爬取的网页:http://word.iciba.com/
爬取目标:网站上所有的单词,单词的发音,单词的中文意思
首先分析网页找到我们要爬取的超链接:
经过我们分析后发现:
所有超链接只是后面的“classid=”这个东西在变,所以第一步找出所有的“classid”的数值:
def get_url(html):#解析首页得到所有的网址
word_all = []#所有classid可能取值的列表
mess = BeautifulSoup(html,'lxml')
word_num = mess.select('.main_l li')
for word in word_num:
word_all.append(word.get('class_id'))
return word_all
但我们发现单词并不在这一层,而在更里面一层
通过观察我们发现他只不过是在网址后面里加入了“course=”,进一步分析发现有多少课时course的数值就是1到~,所以我们按照上述方法得到course的所有取值
for num in word_all:#word_all为classid所有可能的取值
url_home = 'http://word.iciba.com/?action=courses&classid=' + str(num)#利用字符串拼接起来,得到URL网址
html = get_urlhtml(url_home)
mess = BeautifulSoup(html, 'lxml')
li = mess.select('ul li')#解析得到所有的课时,其中li的长度就是课时的数量
通过一个双重循环得到每一个存在单词的网页:
for num in word_all:#word_all为classid所有可能的取值
url_home = 'http://w