爬取网页小说一键搞定

python爬虫的简单使用

我们都知道爬虫可以爬取网页信息,那么什么信息可以提取呢?又有什么好处呢?
现在就以爬取小说为例,体验一下爬虫的快乐吧。

首先我们要找到爬取的小说网页地址,这个很简单可以直接复制粘贴。之后就是对网页进行解析啦,也就是提取我们想要的部分。

def main():
    url="https://xxxxx"#爬取的网址
    batas=Datas(url)   #对网页进行请求数据
    wen=Data(batas)    #解析数据
    savepath="xxx.txt"         #存为文本文件地址
    Savefile(wen,savepath)     #存为文本文件
  ......
  ......
if __name__=="__main__":
    main()

获得到网页之后还要对网页进行请求,也就是伪装一下自己,不能告诉别人你就是爬虫,要是这样谁还给你数据。。

那怎么伪装呢,也是一个很简单的步骤啦,通过开发者工具找到头部进行复制粘贴。

def askURL(url):
        head={
           xxxxxxxx
        }
        reg=urllib.request.Request(url=url,headers=head)  #请求网页
        try:                                        #异常判断
            response=urllib.request.urlopen(reg)
            html = response.read().decode("utf-8")
        except urllib.error.URLError as e:
            if hasattr(e,"code"):
                print(e.code)
            if hasattr(e,"reason"):
                print(e.reason)
        return html

之后就是进行登入网页的操作了

def Datas(url):
        datalist=[]        #存数据
        html=askURL(url)   #登入网页
        soup = BeautifulSoup(html, "html.parser")      #解析
        for item in soup.find_all('li',class_="c3"):
             data=[]
             item = str(item)
             spans=re.findall(span,item)[0]
             data.append(spans)                      #章节名称
             urls=re.findall(href,item)[0]           #章节链接
             data.append(urls)
             datalist.append(data)
        return datalist

然后就可以用正则表达式提取我们想要的信息就可以解析了。

hs=re.compile(r'

(.*?)

'
,re.S)#标题 p=re.compile(r'

(.*?)\r

'
,re.S)#内容

对每一章节的提取

def Data(datalist):
    wenfile=[]
    for i in datalist:
            print('%s  正在下载'%i[0])
            url="https://xxx"+str(i[1])
            html=askURL(url)
            soup=BeautifulSoup(html,"html.parser")
            for items in soup.find_all('div',class_="paper-box paper-article"):
               wen=[]
               items=str(items)
               h=re.findall(hs,items)
               wen.append(h)
               itemss=re.findall(p,items)
               wen.append(itemss)
            wenfile.append(wen)
    return wenfile

最后就是保存到文本

def Savefile(datas,savepath):
    f=open(savepath,'w',encoding="utf-8")
    for i in datas:
        for s in i:
            for r in s:
                f.write(str(r))
                f.write('\r\n')
    f.close()
    print("下载完成")

大工告成,小说就直接下在到了电脑中,是不是很方便呀。

以上程序不是很完美,如有问题请多多指教。

你可能感兴趣的:(python,正则表达式,数据挖掘,url,恰饭)