您的位置:首页 > 编程语言

11行代码完成一个超级简单爬虫

2017-12-01 20:24 302 查看
因为去年看过机器学习 Andrew Ng的课程,今天想找来重看一下,发现当没有中文字幕, 啊?? 难当我去年看的就是不带字幕的英文版??

他讲的有一些算法的推导,我认为讲的还是比较好理解的,但是不看中文字幕,推导起来还是有些吃力,找了半天终于找到一个连接,竟然在哔哩哔哩上。

因为之前学了一点爬虫,爬过哔哩哔哩的弹幕,所以今天想把这些视频也爬下来。

我也是上个星期才接触爬虫,只会一些简单的的。今天就把这个最简单的贴出来,也算是对前几天做一下复习吧。

首先我们分析一下哔哩哔哩网址

右键  查看网页源代码 如下图



这里直接把框起来的用正则表达式匹配一下  然后提取出来。  当然,如果只想要前面红框的部分,可以用for循环,然后用字符串拼接,就可以提取了。

这里用到的正则表达式,在代码里面标注了。篮筐里面的我们不要,只需要匹配。红框和黑框需要,就匹配并提去出来。

具体代码如下

import requests#导入网络请求模块
import re#导入正则模块
url='https://www.bilibili.com/video/av9912938/#page=2'
html=requests.get(url)#请求url  这个时候html里面存放的就是url这个网址的源代码
html_List=re.findall("<option value='(.*?)' cid='.*?'>(.*?)</option>",html.text)#从源代码里面提取出我们要的东西
#上面这句re.findall返回一个列表,列表里面的东西就是用正则表达式匹配并提取出来的东西。只需要记住正则表达式'(.*?)'就是匹配并提取我们要的东西
#而‘.*?’就是匹配,但是不提取到列表里面
#上句话中我用到了两次'(.*?)',所以提取到的就是两部分
html_Test=[]#定义一个空列表,来存放我们要的东西
for i in range(len(html_List)):
url_1='网址:https://www.bilibili.com/'+html_List[i][0]+'   主题:'+html_List[i][1]#把提取出来的东西,拼接成自己想要的格式
html_Test.append(url_1)#逐条加入空列表然后存入写入文件
with open(r'E:\html_ML.txt','a+',encoding='utf-8') as File:  #这里a+就是追加的模式  append  防止后面的内容覆盖前面已经写入的东西  前面的r是为了防止后面字符串有转义符
File.write(html_Test[i]+'\n')

我们去E盘下面看一下  就有这个txt文件啦。就是这个样子的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐