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库的使用,希望能跟大家共同进步。
神龙|纯净稳定代理IP免费测试>>>>>>>>天启|企业级代理IP免费测试>>>>>>>>IPIPGO|全球住宅代理IP免费测试