Python网络爬虫

最近要做一个网络爬虫的程序,但是由于没有学习过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.')

最后输出结果为:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值