一个完整的大作业

 

 

 

本次爬取小说的网站为136书屋。

 

先打开花千骨小说的目录页,是这样的。

我们的目的是找到每个目录对应的url,并且爬取其中地正文内容,然后放在本地文件中。

 

2.网页结构分析

 

首先,目录页左上角有几个可以提高你此次爬虫成功后成就感的字眼:暂不提供花千骨txt全集下载。

 

继续往下看,发现是最新章节板块,然后便是全书的所有目录。我们分析的对象便是全书所有目录。点开其中一个目录,我们便可以都看到正文内容。

 

 

按F12打开审查元素菜单。可以看到网页前端的内容都包含在这里。

 

 

 

我们的目的是要找到所有目录的对应链接地址,爬取每个地址中的文本内容。

 

有耐心的朋友可以在里面找到对应的章节目录内容。有一个简便方法是点击审查元素中左上角箭头标志的按钮,然后选中相应元素,对应的位置就会加深显示。

这样我们可以看到,每一章的链接地址都是有规则地存放在<li>中。而这些<li>又放在<div id=”book_detail” class=”box1″>中。

 

 

我不停地强调“我们的目的”是要告诉大家,思路很重要。爬虫不是约pao,蒙头就上不可取。

3.单章节爬虫

刚才已经分析过网页结构。我们可以直接在浏览器中打开对应章节的链接地址,然后将文本内容提取出来。

我们要爬取的内容全都包含在这个<div>里面。

 代码整理如下

from urllib import request

from bs4 import BeautifulSoup

 

if __name__ == '__main__':

    # 第8章的网址

    url = 'http://www.136book.com/huaqiangu/ebxeew/'

    head = {}

    # 使用代理

    head['User-Agent'] = 'Mozilla/5.0 (Linux; Android 4.1.1; Nexus 7 Build/JRO03D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166  Safari/535.19'

    req = request.Request(url, headers = head)

    response = request.urlopen(req)

    html = response.read()

    # 创建request对象

    soup = BeautifulSoup(html, 'lxml')

    # 找出div中的内容

    soup_text = soup.find('div', id = 'content')

    # 输出其中的文本

    print(soup_text.text)

运行结果如下:

 

posted @ 2017-10-29 11:21  杨小宏  阅读(201)  评论(0编辑  收藏  举报