当前位置: 首页 > article >正文

人民邮电出版社书籍信息爬虫

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表示网页请求成功。


http://www.kler.cn/a/505870.html

相关文章:

  • WEB 攻防-通用漏-XSS 跨站脚本攻击-反射型/存储型/DOMBEEF-XSS
  • 【深度学习实战】kaggle 自动驾驶的假场景分类
  • 智能科技与共情能力加持,哈曼重新定义驾乘体验
  • 计算机的错误计算(二百一十二)
  • 【react】使用antd Table渲染数据遇到的报错问题
  • vue3 uiapp实现一个数字输入组件, 舒服非数字会默认转成最小数
  • C/C++中,const、static关键字有什么作用,如何定义、初始化,什么情形下需要用到这两关键字?
  • util层注入service
  • RabbitMQ-交换机
  • Flink CDC 在阿里云实时计算Flink版的云上实践
  • [Qt]常用控件介绍-多元素控件-QListWidget、QTableWidget、QQTreeWidget
  • 再见IT!
  • [每周一更]-(第131期):Go并发协程总结篇
  • 如何在JS里进行深拷贝
  • K8S 节点选择器
  • Luggage Lock( The 2021 ICPC Asia Shenyang Regional Contest )
  • 《鸿蒙Next微内核:解锁人工智能决策树并行计算的加速密码》
  • (蓝桥杯)使用差分数组和前缀和解决区间更新问题——倒水
  • 9.7 visual studio 搭建yolov10的onnx的预测(c++)
  • 解锁企业数字化转型新力量:OpenCoze(开源扣子)
  • 备战蓝桥杯 队列和queue详解
  • git操作(bitbucket仓库)
  • 数据库(MySQL)练习
  • Android Room 持久化库的介绍及使用方法
  • 力扣经典题目之120.三角形最小路径和
  • PHP智慧小区物业管理小程序