超简单的Python爬虫基础学习

超简单的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()

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值