最近要做一个网络爬虫的程序,但是由于没有学习过python,只能在博客上恶补了一下知识。在有一定程序设计能力上的人来说python还是比较容易看懂的。
我是安装完python,然后装了pycharm来编译的,具体安装过程网上有很详细的教程,这里就不说了。
这里做的爬取慕课计算机课程中数据结构的课程内容,打开网页可以看到:
https://www.icourse163.org/course/DLUT-1205981804?from=study
我们要做的就是获取他的课程大纲并且分类它的标题和内容。
第一步:过去它的html:
#-*_coding:utf8-*-
import requests
url = 'https://www.icourse163.org/course/DLUT-1205981804?from=study'
print('开始获取网页信息:')
m_Html = requests.get(url)
print(m_Html.text)
我们看到获取来的内容有这么一段:接下来我们需要把这一段的内容分模块的取出来:这需要简单的发现它的规律,这里是用到原理是正则表达式(不懂的自行学习),很容易可以发现它以’{\nname:‘开头,并且以’\t}'结束:
#-*_coding:utf8-*-
import requests
import re
url = 'https://www.icourse163.org/course/DLUT-1205981804?from=study'
print('开始获取网页信息:')
m_Html = requests.get(url)
module = re.findall('{\\nname:(.*?)\\n}',m_Html.text,re.S)
print(module)
可以发现的通过筛选后,其他无用的信息都被剔除了,接下来要做的是从中分类:
#-*_coding:utf8-*-
import requests
import re
climb_Content = [0]
url = 'https://www.icourse163.org/course/DLUT-1205981804?from=study'
print('开始获取网页信息:')
m_Html = requests.get(url)
module = re.findall('{\\nna(.*?)}\\n,',m_Html.text,re.S)
for text in module:
content = {}
content['章节:'] = re.search('me: \"(.*?)\",',text,re.S).group(1)
content['目标:'] = re.search('goals: \"(.*?)\",', text, re.S).group(1)
content['计划:'] = re.search('plan: \"(.*?)\",', text, re.S).group(1)
print(content['章节:'])
print(content['目标:'])
print(content['计划:'])
就这样,一个简单的网页爬虫就做完了。最后再整合一下代码,并且输出保存一下,这里我们用txt来保存。
#-*_coding:utf8-*-
import requests
import re
class crawler(object):
def __init__(self):
print('this is easy net crawler project:')
def Get_Html(self,url):
return requests.get(url)
def Get_ALL_Module(self,Source_Html):
return re.findall('{\\nna(.*?)}\\n,',Source_Html.text,re.S)
def Divide_Module(self,Source_Module):
Climb_Content = []
for text in Source_Module:
content = {}
content['章节:'] = re.search('me: \"(.*?)\",',text,re.S).group(1)
content['目标:'] = re.search('goals: \"(.*?)\",', text, re.S).group(1)
content['计划:'] = re.search('plan: \"(.*?)\",', text, re.S).group(1)
Climb_Content.append(content)
return Climb_Content
def Save_Information(self,All_Text):
with open('course.txt','w',encoding='utf-8') as file:
for text in All_Text:
file.write('章节:' + text['章节:'] + '\n')
file.write('目标:' + text['目标:'] + '\n')
file.write('计划:' + text['计划:'] + '\n\n')
file.close()
if __name__ == '__main__':
test = crawler()
url = 'https://www.icourse163.org/course/DLUT-1205981804?from=study'
m_Html = test.Get_Html(url)
m_Module = test.Get_ALL_Module(m_Html)
m_Content = test.Divide_Module(m_Module)
test.Save_Information(m_Content)
print('save over.')
最后输出结果为: