超简单的Python爬虫基础学习

导读:本篇文章讲解 超简单的Python爬虫基础学习,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

超简单的Python爬虫基础学习

re模块: 使python拥有全部的正则表达式功能。
urllib模块:使Python拥有对URL的网络请求,响应获取,代理和cookie 设置,URL解析等。

一,分析网页源代码

首先要做的是,在要爬取的网页http://www.quanshuwang.com/book/0/329中查看源代码,分析要获取内容的规律。
在这里插入图片描述
我要获取的就是该小说的所有章节和章节地址,分析下面的源代码:
在这里插入图片描述

二,获取正则表达式

通过以上分析目标源代码(下面展示了其中一小部分)

<li><a href="http://www.quanshuwang.com/book/0/329/97410.html" title="第一章 陨落的天才,共3456字">第一章 陨落的天才</a></li>
<li><a href="http://www.quanshuwang.com/book/0/329/97427.html" title="第二章 斗气大陆,共4182字">第二章 斗气大陆</a></li>
<li><a href="http://www.quanshuwang.com/book/0/329/97433.html" title="第三章 客人【求收藏,求推荐票^_^】,共3104字">第三章 客人【求收藏,求推荐票^_^】</a></li>
<li><a href="http://www.quanshuwang.com/book/0/329/97439.html" title="第四章 云岚宗 【求收藏,求推荐!】,共2414字">第四章 云岚宗 【求收藏,求推荐!】</a></li>
<li><a href="http://www.quanshuwang.com/book/0/329/97446.html" title="第五章 聚气散 【求推荐,求收藏^_^】,共2394字">第五章 聚气散 【求推荐,求收藏^_^】</a></li>

由此可以得到获取章节和URL的对应正则表达式

# 正则表达式匹配章节
    reg = r'<li><a href="(.*?)" title=".*?">(.*?)</a></li>'

第一个(.*?)匹配了URL,第二个匹配了章节标题

然后就可以通过Python来爬取内容了。

三,爬取数据

简单爬取网页内容

# coding:utf-8
import re
import urllib.request

def getHTML():
    "获取网站源代码"
    html = urllib.request.urlopen("http://www.quanshuwang.com/book/0/329").read()
    html = html.decode('gbk')
    # 正则表达式匹配章节
    reg = r'<li><a href="(.*?)" title=".*?">(.*?)</a></li>'
    reg = re.compile(reg)
    # 获取匹配内容
    urls = re.findall(reg, html)
    for url in urls:
        chapter_url = url[0]
        chapter_title = url[1]
        print("%s : %s" % (url[1], url[0]))

getHTML()

输出结果:

第一章 陨落的天才 : http://www.quanshuwang.com/book/0/329/97410.html
第二章 斗气大陆 : http://www.quanshuwang.com/book/0/329/97427.html
第三章 客人【求收藏,求推荐票^_^】 : http://www.quanshuwang.com/book/0/329/97433.html
第四章 云岚宗 【求收藏,求推荐!】 : http://www.quanshuwang.com/book/0/329/97439.html
第五章 聚气散 【求推荐,求收藏^_^】 : http://www.quanshuwang.com/book/0/329/97446.html
......

爬取下载整部小说

# coding:utf-8
import re
import urllib.request

def getHTML():
    "获取网站源代码"
    html = urllib.request.urlopen("http://www.quanshuwang.com/book/0/329").read()
    html = html.decode('gbk')
    # 正则表达式匹配章节
    reg = r'<li><a href="(.*?)" title=".*?">(.*?)</a></li>'
    reg = re.compile(reg)
    # 获取匹配内容
    urls = re.findall(reg, html)

    for url in urls:
        chapter_url = url[0]
        chapter_title = url[1]
        print("%s : %s" % (url[1], url[0]))
        #通过章节URL获取章节内容
        chapter_html = urllib.request.urlopen(chapter_url).read()
        chapter_html = chapter_html.decode('gbk')
        chapter_reg = r'&nbsp;&nbsp;&nbsp;&nbsp;(.*?)<br />'
        chapter_reg = re.compile(chapter_reg, re.S)
        chapter_content = re.findall(chapter_reg, chapter_html)
        for content in chapter_content:
            f = open('E:\pachong\dpcq\{}.txt'.format(chapter_title), 'a')
            f.write((content + " \n"))

getHTML()

下载目录:
在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/81627.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!