Python爬虫之爬取笔趣阁小说下载到本地文件并且存储到数据库

学习了python之后,接触到了爬虫,加上我又喜欢看小说,所以就做了一个爬虫的小程序,爬取笔趣阁小说。

 

 

程序中一共引入了以下几个库:

import requests
import mysql.connector
import os
import time
from bs4 import BeautifulSoup
import urllib

 

网站不可能把所有书籍放在页面上,仔细观察网站构成与思考之后,从网站的搜索栏查找书籍是最好的。

这是搜索地址栏,searchkey+=   后面加上书名就能够进入到搜索书籍的详情页了,但是这里就涉及URL的规定了。按照标准,URL只允许一部分ASCLL字符,其他字符(如汉字)是不符合标准的,所以就要对汉字进行编码。例如我们要搜索三寸人间:

 

首先将输入获得的小说名转化为gbk编码,然后调用urllib.parse.quote()方法就能把中文转化为相应的URL地址。然后拼接地址得到url_search。到这里我们就得到了我们想要的搜索的地址,然后就可以进行爬虫了。

先上完整代码,然后简单解释一下代码。

import requests
import mysql.connector
import os
from bs4 import BeautifulSoup
import urllib
url_base='http://www.biquge.com.tw'
lastrowid=0
class Sql(object):
    #获得数据库连接:
    conn = mysql.connector.connect(host='localhost',port=3306,user='root',passwd='123456789',database='novel',charset='utf8')
    def addnovels(self,novelname):#向数据库表插入小说
        cur = self.conn.cursor()
        cur.execute("insert into novel(novelname) values('%s')" %(novelname))
        lastrowid = cur.lastrowid
        cur.close()
        self.conn.commit()
        return lastrowid
    def addchapters(self,novelid,chaptername,content):#向数据库插入小说的内容
        cur = self.conn.cursor()
        cur.execute("insert into chapter(novelid,chaptername,content) values(%s , '%s' ,'%s')" %(novelid,chaptername,content))
        cur.close()
        self.conn.commit()

def getHtmltext(url):
    try:
        r = requests.get(url, timeout=60)
        r.raise_for_status()
        r.encoding = "gbk"
        return r.text
    except:
        return ""

def Download(soup_search, path1):
    second=0
    datas=soup_search.find("div",{"id":"list"}).find("dl").find_all("dd")
    if not os.path.exists(path1):
        os.makedirs(path1)
    for i in datas:
        second+=1
        link = i.a.attrs.get("href")  # 得到具体一个章节的URL地址
        numSection=i.a.string#得到小说章节名
        print(numSection)
        path2=path1+"\\"+numSection+'.txt'
        download_url=url_base+link
       
  • 0
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值