第一个爬虫,爬取腾讯课堂课名列表

最近开始学习爬虫,还是比较习惯python的简洁,所以选择用python写爬虫。

python爬虫有很多框架,比如Scapry等,还有一些分布式框架,刚学还是一步一步来,以后再谈框架。

首先,python3+提供的requests库很强大,能够满足一般人的爬虫需求。今天就先写一个爬取腾讯课堂课名列表的小程序。

先上代码,后解析:

import requests
from bs4 import BeautifulSoup as bs
txurl='https://ke.qq.com/course/list?mt=1001'
response=bs(requests.get(txurl).text,'html.parser')
print("网页标题是:",response.h1.string)
j=1
print("-----"*10,"下面是课程列表","-------"*10)
for i in response.find_all('li',{'class':'course-card-item'}):
    print(j,"课程名称:",i.h4.text,"--->",i.text)
    j=j+1
print("-----"*10,"上面面是课程列表","-------"*10)

 下面是运行结果:



 下面是思路分析:

1,import requests

导入requests,首先它是一个http库,对爬来的处理都是很原始的那种,没有框架那么方便(最主要是减少代码量),但是对于刚学,还是多了解一些爬虫思路好一点,对以后自己写分布式框架有很大的帮助。

2,from bs4 import BeautifulSoup as bs

从bs4导入BeautifulSoup库,重命名为bs。这里重命名只是针对此处重命名,并非在python库里面对它重命名,只是为了后面方便使用。BeautifulSoup和bs,很直观的就认为bs更简洁。

“Beautiful Soup提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能。它是一个工具箱,通过解析文档为用户提供需要抓取的数据,因为简单,所以不需要多少代码就可以写出一个完整的应用程序。

Beautiful Soup自动将输入文档转换为Unicode编码,输出文档转换为utf-8编码。你不需要考虑编码方式,除非文档没有指定一个编码方式,这时,Beautiful Soup就不能自动识别编码方式了。然后,你仅仅需要说明一下原始编码方式就可以了。

Beautiful Soup已成为和lxml、html6lib一样出色的python解释器,为用户灵活地提供不同的解析策略或强劲的速度。”

3,txurl='https://ke.qq.com/course/list?mt=1001'

这个就不需要多解释了,无非就是我们抓取数据的网页URL。

4,还是介绍BeaautifulSoup的使用方法,即BeautifulSoup(markup, “html.parser”),此处对应的是bs(requests.get(txurl).text,'html.parser')

5,网页数据过滤输出,此处还在学习,先简单说一点,后面在一片里面整体的讲详细一点。

首先,要分析网页源码,如下图:



 

1,h1部分需要过滤出来,我已经圈起来了,具体语法h1.string。实际上为什么要用string呢?为什么不用text?(暂不做具体回答,希望有人能给出回答!大笑

2,课程列表打印,它们都在li标签下面,而且class名称都是一样的,代码如下:

response.find_all('li',{'class':'course-card-item'})

 找到所有class名称为course-card-item的li标签,然后循环打印出想要的内容。

猜你喜欢

转载自xiaojingjing.iteye.com/blog/2294798