Python爬取365好书中小说代码实例

  

  

要转载的小伙伴转载后请注明转载的地址

  

需要用到的库

  
      <李>从bs4进口BeautifulSoup李   <李> 导入请求   <李> 进口时间   
  

365好书链接:http://www.365haoshu.com/爬取《我以月夜寄相思》小说

  

首页进入到目录:http://www.365haoshu.com/Book/Chapter/List.aspx& # 63; NovelId=3026

  

获取小说的每个章节的名称和章节链接

  

打开浏览器的开发者工具,查找一个章节:如下图,找到第一章的名称和href(也就是第一章节内容页面的链接),开始写代码

  

 Python爬取365好书中小说代码实例

        从bs4进口BeautifulSoup   进口的要求   导入的时间   #分别导入时间、请求BeautifulSoup库      url=' http://www.365haoshu.com/Book/Chapter/'   #链接地址url,这章儿url节链接没全写出来是因为下面获取章节链接时要用到这些url   要求=requests.get (url + List.aspx& # 63; NovelId=0326)   #打开章节页面,   req_bf=BeautifulSoup (req.text“html.parser”)   打印(req_bf)   #将打开的页面以文本打印出来   div=req_bf.find_all (" div " class_=皍ser-catalog-ul-li”)   #分析页面,所需要的章节名和章节链接是在div标签,属性类为user-catalog-ul-li下   #找到这个下的内容,并打印   s=[]   在div: d   s.append (d.find (' a '))   打印(s)   #获取div下面的一个标签下的内容   名称=[]#存储章节名   href=[] #存储章节链接   我的学生:   names.append (i.find(跨度).string)   href。追加(url + i.get (“href”))   #将所有的章节和章节链接存入的列表中   观察href后的链接和打开章节内容页面的链接是不完全的相同的,所以要拼接使得浏览器能直接打开章节内容      

获取到链接和章节名后打开一个章节获取文本内容;

  

和获取章节名方法一致,一步一步查找到内容的位置

        txt=requests.get (href [0])   div_bf=BeautifulSoup (txt.text html.parser)   div=div_bf。find_all (" div " class_='集装箱user-reading-online pos-rel”)   #打印(div)   ps=BeautifulSoup (str (div),“html.parser”)   p=ps.find_all (“p”, class_=' p ')   打印(p)   txt=[]   病人:我的   txt.append (i.string + ' \ n ')   打印(txt)      

获取单一章节完成

  

接下来整理代码,获取整个小说的内容,代码如下:

        #——*——utf - 8编码=*      从bs4进口BeautifulSoup   进口的要求   导入的时间         类spiderstory(对象):      def __init__(自我):#初始化   自我。url=' http://www.365haoshu.com/Book/Chapter/'   self.names=[] #存放章节名   自我。href=[] #存放章节链接      def get_urlAndName(自我):   “获取章节名和章节链接”   要求=requests.get (url=self.url + List.aspx& # 63; NovelId=0326) #获取章节目录页面   time . sleep(1) #等待1秒   div_bf=BeautifulSoup (req.text html.parser) #申请后面跟文本和html都行   div=div_bf。find_all (div, class_=user-catalog-ul-li) #查找内容,标签为div,属性为类=皍ser-catalog-ul-li”   a_bf=BeautifulSoup (str (div))   一个=a_bf.find_all (a) # #查找内容,标签为a   因为我在一个:   self.names.append (i.find(跨度).string) #获取内容直接字符串就行   self.hrefs.append(自我。url + i.get (“href”)) #获取链接      def get_text(自我、url):   “获取章节内容”   要求=requests.get (url=url)   div_bf=BeautifulSoup (req.text“html.parser”)   div=div_bf。find_all (" div " class_='集装箱user-reading-online pos-rel”) #查找内容   ps=BeautifulSoup (str (div),“html.parser”)   p=ps.find_all (“p”, class_=' p ')   文本=[]   对于每个在p:   text.append (each.string)   打印(文本)      返回文本#将获得的内容返回      def作家(自我、名称、路径、文本):   “写文入文本档中”   打开(路径,‘一个’,编码=皍tf - 8”) f:   f。写(名字+ ' \ n ')   f.writelines(文本)   f.write (“\ n \ n”)   if __name__==癬_main__”: #运行入口   s=spiderstory ()   s.get_urlAndName ()   勒=len (s.names)   因为我在范围(le): #利用的循环获得所有的内容   name=s.names[我]   文本=str (s.get_text (s.hrefs[我]))   s.writer(名字,“我以月夜寄相思. txt”,文本)   打印(“下载完毕! ! !”)

Python爬取365好书中小说代码实例