人民邮电出版社书籍信息爬虫
1.基本理论
1.1概念体系
网络爬虫又称网络蜘蛛、网络蚂蚁、网络机器人等,可以按照我们设置的规则自动化爬取网络上的信息,这些规则被称为爬虫算法。是一种自动化程序,用于从互联网上抓取数据。爬虫通过模拟浏览器的行为,访问网页并提取信息。这些信息可以是结构化的数据(如表格数据),也可以是非结构化的文本。爬虫任务的执行流程通常包括发送HTTP请求、解析HTML文档、提取所需数据等步骤。
1.2技术体系
1请求库:用于向目标网站发送HTTP请求。常用的请求库包括requests、httplib、urllib等。这些库可以帮助我们模拟浏览器行为,发送GET、POST等请求,并处理响应内容。
2.解析库:用于解析HTML或XML文档,提取出我们需要的数据。常用的解析库包括BeautifulSoup、lxml、pyquery等。这些库可以帮助我们根据HTML文档的结构和标签,提取出我们需要的数据。
3.存储库:用于将爬取到的数据存储到本地或数据库中。常用的存储库包括sqlite3、mysql-connector-python、pymongo等。这些库可以帮助我们将数据存储到关系型数据库或非关系型数据库中,以便后续分析和利用。
2.代码编写流程
代码编写流程
代码共分为3部分,1网页地址规律函数。2网页数据解析,3数据存储。
2.1.网页地址规律
第一页
网页地址https://www.ryjiaoyu.com/tag/details/19?page=0
第二页
网页地址https://www.ryjiaoyu.com/tag/details/19?page=1
对上面地址分析,发现地址中后面数字发生改变,第一页位数为0,第二页位数为1
依次类推。
编写翻页函数
函数中x为页面地址位数
2.2.页面解析
2.3.网页数据保存
·
3.应用举例
该代码对获取网页数据,200表示网页请求成功,输出网页内容。
4.编写代码
import requests
from bs4 import BeautifulSoup
from openpyxl import Workbook,load_workbook
import os
def wy_text(x):
global wwww
urls='https://www.ryjiaoyu.com/tag/details/19?page={}'.format(x)
res=requests.get(url=urls)
print(res.status_code)
www=res.text
return www
class Excel_write():
def __init__(self):
self.excel_file = "人民邮电出版社计算机书籍信息.xlsx"
if not os.path.exists(self.excel_file):
self.wk = Workbook();#创建excel工作薄
self.wk.create_sheet("书籍信息",0);#sheet表名,位置(从0开始)
# 默认选择当前活跃选项卡
self.wb =self.wk['书籍信息']
self.wb.append(["书名",'作者','价格']);#横向插入数据
self.wk.save(self.excel_file)
self.wk_load = load_workbook(filename=self.excel_file)
self.wb_load = self.wk_load['书籍信息']
def nr1(self,text):
nr_text=[]
soup = BeautifulSoup(text, 'html.parser')
f1=soup.find_all('h4',attrs={'class':"name"})
f2=soup.find_all("div",attrs={'class':"author"})
f3=soup.find_all("span",attrs={'class':"price"})
for i in range(len(f1)):
nr_text.append([f1[i].a.text,f2[i].span.text,f3[i].text])
return nr_text
def nr_write(self):
for i in range(100):
s=wy_text(i)#类中调用外部函数
list=Excel_write().nr1(s)#类中函数相互调用,注意外部或内部self参数都不用加
for k in range(len(list)):
self.wb_load.append(list[k])
self.wk_load.save(filename=self.excel_file)
if __name__=="__main__":
Excel_write().nr_write()
5.运行结果
输出200表示网页请求成功。