python爬取<十宗罪>

本篇文章用到三个库,分别是re,os,requests库,他们的分别对应:
1.re是正则表达式库,是用来提取特定文本内容的
2.os对文件夹进行创建删除(作用之一)
3.获取网页内容
在爬虫中,对于正则表达式我们常用的符号有(),.,,?,,\d;
一般(.
?),(.*)这两者最为常见,二者区别是第一个是非贪婪模式,第二个是贪婪模式

import re
s = 'asasasas'
li = re.findall('(as.*?)',s)
print(li)
li = re.findall('(as.*)',s)
print(li)

得到的对应结果:

['as', 'as', 'as', 'as']
['asasasas']

话不多说直接上代码!

import re
import os
import requests
def get_url(html):
    '''通过查看原网页发现给网页使用过GBK方式进行编码的,
    先通过抓大把需要的大体的内容进行抓取,然后在进行细分
    (通过正则表达式),把每一章的链接给爬下来,返回一个列表'''
    tx_url = []
    response = requests.get(html).content.decode('GBK')
    response1 = re.search('(第一卷 地窖囚奴.*?)</tbody>',response,re.S).group(1)
    tx_ = re.findall('<a href="(.*?)">',response1,re.S)
    for url in tx_:
        tx_url.append(html + url)
    return tx_url
def get_txt(url):
    '''对于每一章,通过原网页代码分析,
    我们用正则表达式可以把每一章的标题和内容进行提取出来
    然后将其存入对应的目录中'''
    response = requests.get(url).content.decode('GBK')
    tx_title = re.findall('<title>(.*?)</title>',response,re.S)[0]
    tx_txt = re.findall('<p>(.*?)</p>',response,re.S)[0]
    tx_txt = tx_txt.replace('<br />','')
    file_path = os.path.join('十宗罪',tx_title + '.txt')
    with open(file_path,'w',encoding='GBK') as f:
        f.write(tx_txt)
os.makedirs('十宗罪',exist_ok= True)#创建一个新文件夹
tx_url = get_url('https://www.kanunu8.com/book/4514/')#获取每一章的链接
for url in tx_url:
    get_txt(url)

代码不难,但是在爬虫初学阶段对于相应的套路还是有所生疏,在今后的生活中,应多注意思维和习惯的养成。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值