学习python爬虫笔记(1)

学习python爬虫笔记(1)


什么是爬虫?

爬虫为以一定规则,在网络中自动获取信息并储存的脚本或程序。

所需工具

  • python2.7
  • python第三方模块-requests

python2.7安装方法不再赘述
requests模块安装方法参考此处

基础知识

我们日常所看到浏览器所展现的网页实际上是一系列html css js代码组成的,浏览器以一定的规则将这些代码渲染成你所看到的这些内容。
以最简化的方式来说,当你敲入一个网址并按下回车时,发生的事情是浏览器对这个网址对应的服务器发出了一个请求,服务器返回相应的代码段,最后浏览器渲染出一个网页。
爬虫的工作原理便是类似于此,通过对你想抓取的网址发出请求,得到返回的代码并对此进行解析,进而得到想要的内容。

本节目的

爬取b站首页的视频相关内容

实践

import re
import requests

html = requests.get(url = "https://www.bilibili.com")
print html.content

输出结果为(由于过长,节选部分)

<div class="groom-module"><a href="/video/av13379383" target="_blank" title="【一人全役】幻想万华镜 永夜异变之章 中篇(日配)"><div class="lazy-img"><img alt="【一人全役】幻想万华镜 永夜异变之章 中篇(日配)" src=""></div><div class="card-mark"><p class="title">【一人全役】幻想万华镜 永夜异变之章 中篇(日配)</p><p class="author">up主:vivian198808</p><p class="play">播放:3.7万</p></div></a><div class="watch-later-trigger w-later"></div></div><div class="groom-module"><a href="/video/av13324761" target="_blank" title="【东方MV / 4K高清重置】东方Celeb ~ABUNAI SISTERS~【Innocent Key】"><div class="lazy-img"><img alt="【东方MV / 4K高清重置】东方Celeb ~ABUNAI SISTERS~【Innocent Key】" src=""></div><div class="card-mark"><p class="title">【东方MV / 4K高清重置】东方Celeb ~ABUNAI SISTERS~【Innocent Key】</p><p class="author">up主:伊吹小秋</p><p class="play">播放:2.9万</p></div></a><div class="watch-later-trigger w-later"></div></div><div class="groom-module"><a href="/video/av13383690" target="_blank" title="【LOL】阿狸的娇喘让人听了根本把持不住啊"><div class="lazy-img"><img alt="【LOL】阿狸的娇喘让人听了根本把持不住啊" src=""></div><div class="card-mark"><p class="title">【LOL】阿狸的娇喘让人听了根本把持不住啊</p><p class="author">up主:逗比宇</p><p class="play">播放:18.1万</p></div></a><div class="watch-later-trigger w-later"></div></div><div class="groom-module"><a href="/video/av13368026" target="_blank" title="【阅后即瞎】教你如何给有钱人当孙子"><div class="lazy-img"><img alt="【阅后即瞎】教你如何给有钱人当孙子" src=""></div><div class="card-mark"><p class="title">【阅后即瞎】教你如何给有钱人当孙子</p><p class="author">up主:阅后即瞎</p><p class="play">播放:58.0万</p></div></a><div class="watch-later-trigger w-later"></div></div><div class="groom-module"><a href="/video/av13375033" target="_blank" title="【声优竟是同一人!】笨女孩中的声优们还配音过哪些角色#5"><div class="lazy-img"><img alt="【声优竟是同一人!】笨女孩中的声优们还配音过哪些角色#5" src=""></div><div class="card-mark"><p class="title">【声优竟是同一人!】笨女孩中的声优们还配音过哪些角色#5</p><p class="author">up主:饭帅marshall-fun</p><p class="play">播放:7.3万</p></div></a><div class="watch-later-trigger w-later"></div></div><div class="groom-module"><a href="/video/av13342705" target="_blank" title="【MMD】重音Teto·现金才是BEST FRIEND【镜头配布】"><div class="lazy-img"><img alt="【MMD】重音Teto·现金才是BEST FRIEND【镜头配布】" src=""></div><div class="card-mark"><p class="title">【MMD】重音Teto·现金才是BEST FRIEND【镜头配布】</p><p class="author">up主:TsWEITAO</p><p class="play">播放:1.0万</p></div></a><div class="watch-later-trigger w-later"></div></div><div class="groom-module"><a href="/video/av13326941" target="_blank" title="【1人20役】幻想万华镜-永夜异变之章(中篇)【中文配音】"><div class="lazy-img"><img alt="【1人20役】幻想万华镜-永夜异变之章(中篇)【中文配音】" src=""></div><div class="card-mark"><p class="title">【1人20役】幻想万华镜-永夜异变之章(中篇)【中文配音】</p><p class="author">up主:瑷珥</p><p class="play">播放:1.9万</p></div></a><div class="watch-later-trigger w-later"></div></div><div class="groom-module"><a href="/video/av13358364" target="_blank" title="【入宅五年】百位动画男神大混剪!为喜欢的角色献上弹幕吧!"><div class="lazy-img"><img alt="【入宅五年】百位动画男神大混剪!为喜欢的角色献上弹幕吧!" src=""></div><div class="card-mark"><p class="title">【入宅五年】百位动画男神大混剪!为喜欢的角色献上弹幕吧!</p><p class="author">up主:机智的废柴君</p><p class="play">播放:1.9万</p></div></a><div class="watch-later-trigger w-later"></div></div><span class="rec-btn prev">昨日</span><span class="rec-btn next">一周</span></div></div><div id="home_popularize" adData="[object Object]" state="loading" class="popularize-module report-wrap-module report-scroll-module clearfix"><div class="l-con"><div class="headline clearfix"><i class="icon icon_t icon-promote"></i><span class="name">推广</span></div><div class="storey-box clearfix"><div data-id="0" data-loc-id="34" class="spread-module"><a href="/video/av13346734" target="_blank"><div class="pic"><div class="lazy-img"><img alt="【手游北】花老师教你打卡牌" src=""></div><!----><div class="cover-preview-module"><!----><div class="progress-bar"><span style="width:0%;"></span></div></div><div class="mask-video"></div><div class="danmu-module"></div><span class="dur">22:53</span><img src="//s1.hdslb.com/bfs/static/webssr/home/images/cm_1.png" class="gg-pic"><div class="watch-later-trigger w-later"></div></div><p title="【手游北】花老师教你打卡牌" class="t">【手游北】花老师教你打卡牌</p><!----></a></div><div data-id="70438" data-loc-id="34" class="spread-module"><a href="/video/av2736119" target="_blank"><div class="pic"><div class="lazy-img"><img alt="《纳米核心 第三季》第4话更新!" src=""></div><!----><div class="cover-preview-module"><!----><div class="progress-bar"><span style="width:0%;"></span></div></div><div class="mask-video"></div><div class="danmu-module"></div><!----><!----><div class="watch-later-trigger w-later"></div></div><p title="《纳米核心 第三季》第4话更新!" class="t">《纳米核心 第三季》第4话更新!</p><!----></a></div><div data-id="70444" data-loc-id="34" class="spread-module"><a href="/video/av13326188" target="_blank"><div class="pic"><div class="lazy-img"><img alt="【怪话小组】别找我麻烦 翻唱" src=""></div><!----><div class="cover-preview-module"><!----><div class="progress-bar"><span style="width:0%;"></span></div></div><div class="mask-video"></div><div class="danmu-module"></div><span class="dur">02:17</span><!----><div class="watch-later-trigger w-later"></div></div><p title="【怪话小组】别找我麻烦 翻唱" class="t">【怪话小组】别找我麻烦 翻唱</p><!----></a></div><div data-id="70450" data-loc-id="34" class="spread-module"><a href="/video/av11533956" target="_blank"><div class="pic"><div class="lazy-img"><img alt="【纪录片】“杀死”老妈的50种方法 第二季 - 50 Ways to Kill Your Mammy S2 (2015)" src=""></div><!----><div class="cover-preview-module"><!----><div class="progress-bar"><span style="width:0%;"></span></div></div><div class="mask-video"></div><div class="danmu-module"></div><span class="dur">266:11</span><!----><div class="watch-later-trigger w-later"></div></div><p title="【纪录片】“杀死”老妈的50种方法 第二季 - 50 Ways to Kill Your Mammy S2 (2015)" class="t">【纪录片】“杀死”老妈的50种方法 第二季 - 50 Ways to Kill Your Mammy S2 (2015)</p><!----></a></div><div data-id="70456" data-loc-id="34" class="spread-module"><a href="/video/av13156747" target="_blank"><div class="pic"><div class="lazy-img"><img alt="为嘛实验室-02:【无火烤鸡】不好意思,我们在吐鲁番杀了只鸡" src=""></div><!----><div class="cover-preview-module"><!----><div class="progress-bar"><span style="width:0%;"></span></div></div><div class="mask-video"></div><div class="danmu-module"></div><span class="dur">03:51</span><!----><div class="watch-later-trigger w-later"></div></div><p title="为嘛实验室-02:【无火烤鸡】不好意思,我们在吐鲁番杀了只鸡" class="t">为嘛实验室-02:【无火烤鸡】不好意思,我们在吐鲁番杀了只鸡</p><!----></a></div></div></div>

这段代码调用了requests库的get方法,对https://www.bilibili.com发出了一次get请求,返回了一个对象,该对象内部有一个变量content,内容为返回的html代码。
接下来便要观察需要的内容在文本中的格式。
抽出其中一段为例

<div class="groom-module"><a href="/video/av13379383" target="_blank" title="【一人全役】幻想万华镜 永夜异变之章 中篇(日配)"><div class="lazy-img"><img alt="【一人全役】幻想万华镜 永夜异变之章 中篇(日配)" src=""></div><div class="card-mark"><p class="title">【一人全役】幻想万华镜 永夜异变之章 中篇(日配)</p><p class="author">up主:vivian198808</p><p class="play">播放:3.7万</p></div></a><div class="watch-later-trigger w-later"></div></div>

经过观察发现需要抓取的标题内容格式大约是

<p class ="title">(.*?)</p>

此处中的(.*?)就表示我们要匹配的对象,它表示可以匹配任意字符串。
关于正则表达式的详细内容可参考此处
于是利用正则表达式

# 由于表达式中含有双引号,因此应用单引号括起表达式或转义
title_list = re.findall(string = html.content,
        pattern = '<p class ="title">(.*?)</p>')

我们便得到了视频的标题。
其中返回的title_list为标题字符串的列表
若是想要得到作者的名字,可以利用正则表达式

<p class ="title">(.*?)</p><p class="author">up主:(.*?)</p>

返回的内容为标题up主二元元组的列表

补充

有时候服务器设置了防爬虫机制
为了向服务器假装自己是通过浏览器访问
可以通过设置get方法的headers属性

headers = {
    "User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.101 Safari/537.36"
    }
html = requests.get(url = "https://www.bilibili.com",
        headers = headers)

如此便可伪装自己为浏览器。

总结

本节主要讲解了爬虫的基本概念和requests库以及re库的基本用法,
抓取了b站首页视频的相关内容。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值