Python爬虫爬取纵横中文网月票排行榜前1000的小说

604次阅读
没有评论

python爬虫学习

  • 文章目录
    • 前言

      一、python爬虫

      二、使用步骤

      1.引入库

      2.解析网页函数

      3.获取数据函数

      4.储存数据函数

      5.主函数

      6.创建全局变量

      7.完整代码

      8.爬虫实现

      总结

前言

提示:这里可以添加本文要记录的大概内容:

写的第一个爬虫程序,不足之处还请大佬斧正。


提示:以下是本篇文章正文内容,下面案例可供参考

一、python爬虫

利用python中的数据库进行网页信息的提取

二、使用步骤

1.引入库

代码如下(示例):

import urllib.request import xlwt import re from bs4 import BeautifulSoup

2.解析网页函数

代码如下(示例):

def jiexi(url):#解析网页 head={ "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.75 Safari/537.36 Edg/100.0.1185.39" }#冲破障碍,直达网站 request = urllib.request.Request(url,headers=head) html=""#创建一个空字符串进行接收网页信息 try:#检查是否有报错 response=urllib.request.urlopen(request) html=response.read().decode("utf-8") print(html) except urllib.error.URError as e: if hasattr(e,"code"): print(e.code) if hasattr(e,"reason"): print(e.reason) return html

该处使用的url网络请求的数据。

3.获取数据函数

代码如下(示例):

def getdata(baseural):#获取网站数据,即源码解析后的数据提取 datalist=[] for i in range(1,51):#1~50页的网页 url=baseural+str(i)#网页后面进行加减,从而进行模拟翻页 # print(url) html=jiexi(url) soup=BeautifulSoup(html,"html.parser")#用的是html.parser解析器 for item in soup.find_all('div',class_="rank_d_list borderB_c_dsh clearfix"): data=[] # print(item) item=str(item)

title=re.findall(name,item)[0]#小说名提取 # print(title)

zuoz=re.findall(aut,item)[0]#小说作者提取 # print(zuoz) leix=re.findall(cate,item)[0]#小说类型提取 # print(leix) lianjie = re.findall(link, item)[0]#小说链接提取 # print(lianjie) img = re.findall(photo, item)[0]#小说封面图片提取 # print(img) #数据加入到列表里 data.append(title) data.append(zuoz) data.append(leix) data.append(lianjie) data.append(img) datalist.append(data) #print(datalist) return datalist#返回数据

该处使用的BeautifulSoup库解析的数据。

4.储存数据函数

代码如下(示例):

def savedata(datalist,filename):#数据保存 book=xlwt.Workbook(encoding="utf-8",style_compression=0)#创建workbook对象 sheet=book.add_sheet('小说',cell_overwrite_ok=True)#创建工作表 col=("小说名","作者","类型","小说链接","图片链接") for i in range(0,5):#五列数据的名称填写 sheet.write(0,i,col[i]) for i in range(0,1000):#1000条数据提取 data=datalist[i] for j in range(0,5): sheet.write(i+1,j,data[j]) book.save(filename)#保存到给定名称的excel表格中

该处使用的xlwt库进行数据储存。

5.主函数

代码如下(示例):

def main(): baseural="http://www.zongheng.com/rank/details.html?rt=1&d=1&p="#爬取的纵横小说网站——月票榜 jiexi(baseural) filename="小说排行榜.xls"#创建工作表名称 datalist=getdata(baseural) savedata(datalist,filename)

6.创建全局变量

代码如下(示例):

#利用re.compile创建规则 name=re.compile(r'<div class="rank_d_b_name" title="(.*?)">')#小说名字 aut=re.compile(r'<div class="rank_d_b_cate" title="(.*?)">')#小说作者 photo=re.compile(r'src="(.*?)"/>',re.S)#小说封面图 link=re.compile(r'href="(.*?)" target="_blank">')#小说链接 cate=re.compile(r'<a target="_blank">(.*?)<')#小说类别

该处利用re.compile()函数进行规则的创建。

7.完整代码

代码如下(示例):

import urllib.request import xlwt import re from bs4 import BeautifulSoup def jiexi(url):#解析网页 head={ "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.75 Safari/537.36 Edg/100.0.1185.39" }#冲破障碍,直达网站 request = urllib.request.Request(url,headers=head) html=""#创建一个空字符串进行接收网页信息 try:#检查是否有报错 response=urllib.request.urlopen(request) html=response.read().decode("utf-8") print(html) except urllib.error.URError as e: if hasattr(e,"code"): print(e.code) if hasattr(e,"reason"): print(e.reason) return html

def getdata(baseural):#获取网站数据,即源码解析后的数据提取 datalist=[] for i in range(1,51):#1~50页的网页 url=baseural+str(i)#网页后面进行加减,从而进行模拟翻页 # print(url) html=jiexi(url) soup=BeautifulSoup(html,"html.parser")#用的是html.parser解析器 for item in soup.find_all('div',class_="rank_d_list borderB_c_dsh clearfix"): data=[] # print(item) item=str(item)

title=re.findall(name,item)[0]#小说名提取 # print(title)

zuoz=re.findall(aut,item)[0]#小说作者提取 # print(zuoz) leix=re.findall(cate,item)[0]#小说类型提取 # print(leix) lianjie = re.findall(link, item)[0]#小说链接提取 # print(lianjie) img = re.findall(photo, item)[0]#小说封面图片提取 # print(img) #数据加入到列表里 data.append(title) data.append(zuoz) data.append(leix) data.append(lianjie) data.append(img) datalist.append(data) #print(datalist) return datalist#返回数据

def savedata(datalist,filename):#数据保存 book=xlwt.Workbook(encoding="utf-8",style_compression=0)#创建workbook对象 sheet=book.add_sheet('小说',cell_overwrite_ok=True)#创建工作表 col=("小说名","作者","类型","小说链接","图片链接") for i in range(0,5):#五列数据的名称填写 sheet.write(0,i,col[i]) for i in range(0,1000):#1000条数据提取 data=datalist[i] for j in range(0,5): sheet.write(i+1,j,data[j]) book.save(filename)#保存到给定名称的excel表格中

def main(): baseural="http://www.zongheng.com/rank/details.html?rt=1&d=1&p="#爬取的纵横小说网站——月票榜 jiexi(baseural) filename="小说排行榜.xls"#创建工作表名称 datalist=getdata(baseural) savedata(datalist,filename) #利用re.compile创建规则 name=re.compile(r'<div class="rank_d_b_name" title="(.*?)">') aut=re.compile(r'<div class="rank_d_b_cate" title="(.*?)">') photo=re.compile(r'src="(.*?)"/>',re.S) link=re.compile(r'href="(.*?)" target="_blank">') cate=re.compile(r'<a target="_blank">(.*?)<') # print(photo)

if __name__=="__main__": main() print("干完了老板")

8.爬虫实现

结果如下(示例):

Python爬虫爬取纵横中文网月票排行榜前1000的小说

总结

以上就是今天爬取纵横中文网小说——月票榜排行的的内容,本文仅仅简单介绍了一些python库的使用,希望能跟大家共同进步。

神龙|纯净稳定代理IP免费测试>>>>>>>>天启|企业级代理IP免费测试>>>>>>>>IPIPGO|全球住宅代理IP免费测试

相关文章:

版权声明:Python教程2022-10-28发表,共计4764字。
新手QQ群:570568346,欢迎进群讨论 Python51学习