如何用python爬取网络小说

今天上午忽然想自己用python写一个网络爬虫,爬一本小说,在顶点这个网站,网址:https://www.23us.so/,我选的是一本名叫《三寸人间》的书做例子,原本以为会很简单,但没想到搞了一下午,最后还是在网上找了资料才解决,先贴一部分网站源码:

<code>


<title>三寸人间最新章节_三寸人间全文阅读 - 顶点小说网/<title>







<link>















  • | |

    -> ->

    三寸人间最新章节




    更新时间:2019-10-02 14:48:20




    推荐阅读:

    <table>


    是不是看的有些头疼?而且最重要的是每个章节列表的网址没有规律,虽然只是最后六七位数字不一样,但是我找半天最后的数字的规律也没有找到,网上有一张一张爬的,而且实现的也很明白,但是我最初的思路是在目录页获取所有的章节地址,然后一章一章的去下载,开始没有思路,但是后来想了一个本办法,就是下面的代码:

    <code>
    import requests
    from bs4 import BeautifulSoup
    headers = {
    'user-agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'
    }
    ls = []
    cl=[]
    def getHTMLText(url):
    try:

    r = requests.get(url, timeout=30)
    r.raise_for_status()
    r.encoding = 'utf-8'
    return r.text
    except:
    return ""
    def get_maninfo(url):
    try:
    res=requests.get(url,headers=headers)
    res.raise_for_status()
    res.encoding = res.apparent_encoding
    soup=BeautifulSoup(res.text,'html.parser')
    ceshi=soup.find_all('a')
    for i in ceshi:
    try:
    href = i.attrs['href']
    ls.append(href)
    except:
    continue
    print(len(ls))
    except:
    return ""
    def getText(soup):
    a = str(soup.find_all('dd',{'id':'contents'}))
    a=a.replace('[
    ','')
    return a.replace('
    ','')
    def getHead(soup):
    a = str(soup.find_all('h1')).replace('

    ','')
    return a.replace('

    ','')
    def putText(text,h1):
    dingdian = open("D:\\pythonapk\\ceshi\\三寸人间.txt","a",encoding = "utf-8")
    dingdian.write(h1 + '\\n')
    dingdian.write(text+'\\n\\n\\n\\n')
    dingdian.close
    def man():
    url="https://www.23us.so/files/article/html/0/43/index.html"
    get_maninfo(url)
    for x in range(28, len(ls)):
    cl.append(ls[x])
    for url in cl:
    r = getHTMLText(url)
    soup = BeautifulSoup(r, "html.parser")
    putText(getText(soup), getHead(soup))

    man()
    /<code>

    结果比较成功,当然速度比较慢

    "/<table>
    /<code>


分享到:


相關文章: