简单Python爬虫教程
前面一篇文章《简单Python爬虫教程 (一)》简单介绍了爬虫的准备工作,安装第三方库,也给出了一个例子,这篇文章主要就是展示,这个例子是怎么写出来的。
介绍下为什么选择小说网站的页面,而不是其他的页面,首先就是小说网站的页面简单不复杂,简单意味着规律简单很容易找到,不复杂意味着我们处理起来不复杂,更容易获取我们要的内容。第二点,小说获取的页面内容是文本文件,我给的代码直接打印出来了,可以保存到文本文件中,爬取的内容处理起来简单。第三点,就是适合新入门的人学习,小说网站大多数情况是静态页面,请求一次获取全部的内容,不想动态页面,也没有ajax,很适合初学者进行练手。多的不说了,开始进入练手阶段。
首先就是选择游览器,网络上游览器很多种,IE、Chrome、火狐、UC、360等,一般开发WEB应用的时候,根据甲方提供的需求确定我们我们用什么游览器。但是作为一个程序员,我推荐用Chrome或者火狐,适用性更好一些。我这篇文章是采用的Chrome。开始写代码引入包,通过request.get()方法获取连接内容,我们打印一下。
>>> import requests>>> req = requests.get('http://www.huanyue123.com/book/37/37849/22075553.html')>>> print(req) #直接打印是一个response对象 所以 我们要打印他的 文本>>> print(req.text)
我用的是IDE ,文字比较多,双击才能看,有的时候回出现乱码,可以在打印req.text之前先进行编码操作 如下图
req.encoding = 'GBK' #编码
有人肯定会问为啥是GBK呀,在爬取网页当前页上按F12(mac 右击鼠标点击检查),Ctrl+f 搜索 charset 即可知道答案。如下图:
req.text 打印的是当前页面中所有的文本内容有,很多不是我们想要的,所以得想办法把我们想要的取出来。
还是开发者模式这个功能如图下:截图很清楚,不再赘述了。
看到红框3中的,我想要的文本都在这个
# -*- coding: utf-8 -*-import requestsfrom bs4 import BeautifulSoupreq = requests.get('http://www.huanyue123.com/book/37/37849/22075553.html')#打开网页#req.encoding = 'GBK' #编码html = req.text #获取连接的响应报文bf = BeautifulSoup(html ,'lxml') #按照 lxml报文解析texts = bf.find_all('div', class_ = 'contentbox clear') #找到div格式 contentbox clearprint(texts[0].text) #打印日志