爬虫案例——爬取情话网数据

ops/2024/10/20 5:39:40/

需求:

1.爬取情话网站中表白里面的所有句子(表白词_表白的话_表白句子情话大全_情话网)

2.利用XPath来进行解析

3.使用面向对象形发请求——创建一个类

4.将爬取下来的数据保存在数据库中

8282f421d831464da90687bc3ab0a034.png

c1eef08bee8f4953bc89d9d2ab7611f4.png

c075da74c46b4e3aa86e4a7c841e8eea.png

74141cffdc364ee48287b7ca55db0dfc.png

b6a051b68ba847e68f7a7d031f8a8c8b.png

702a27b6ded643829edee5bf12d65171.png

b78c5f13c9c74c7cba32ac8ae8ccde80.png

写出对应解析语法

//div[@class="box labelbox"]/h4/a/@href

1e464526bf2d4c19b668b1f8c4298037.png

如此照推,详情页文本对应的解析语法

//div[@class="stbody "]//p[1]/text()|//div[@class="stbody first"]//p[1]/text()

b68c938feda74f909c73356958c25b8e.png示例代码:

import requests
from lxml import etree
import pymysql
#面向对象发请求 1.创建一个类
class Spiderqinghua():def __init__(self):self.url ='http://www.ainicr.cn/qh/t8.html'self.headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36'}#建立与MySQL的连接self.db = pymysql.connect(user='root',password='wx990826',database='pingping')self.cursor=self.db.cursor()#获取操作游标def get_data(self,url):r = requests.get(url=url,headers=self.headers)return r.textdef get_list_data(self,data):#列表页#//div[@class="box labelbox"]/h4/a/@hrefxml=etree.HTML(data)hrefs = xml.xpath('//div[@class="box labelbox"]/h4/a/@href')# print(hrefs)return hrefsdef parse_data(self,data):#详情页xml=etree.HTML(data)content = xml.xpath('//div[@class="stbody "]//p[1]/text()|//div[@class="stbody first"]//p[1]/text()')for contents in content:print('文本:',contents)print('=====================')self.save_data(contents)def save_data(self,qinghua):sql = 'insert into qinghua_data(text) value ("%s")'self.cursor.execute(sql,[qinghua])#执行sql语句self.db.commit()#提交def main(self):html_data=self.get_data(self.url)hrefs = self.get_list_data(html_data)for href in hrefs:print('详情页连接:',href)x_data = self.get_data(href)# print(x_data)self.parse_data(x_data)
#//div[@class="stbody "]//p[1]/text()|//div[@class="stbody first"]//p[1]/text()if __name__ == '__main__':spider=Spiderqinghua()spider.main()# h = spider.get_data()# # print(h)# spider.get_list_data(h)

运行结果:

dc1ff20b0bdc4e12bd995ab08d0c72a7.png

cdc903e90ed54574945aacca9ff486eb.png

 


http://www.ppmy.cn/ops/122535.html

相关文章

滚雪球学MySQL[4.3讲]:MySQL表设计与优化:正规化、表分区与性能调优详解

全文目录: 前言4.3 表设计与优化1. 正规化与反规范化1.1 正规化正规化的步骤:正规化的优点: 1.2 反规范化示例:反规范化提升性能反规范化的优点:反规范化的缺点: 2. 表的分区与分区策略2.1 分区的类型1. **…

<<机器学习实战>>12-14节笔记:机器学习模型可信度、逻辑回归模型及多分类问题处理

12机器学习模型可信度 是否检验模型的指标好就一定说明模型可用?不是,必须得保证训练的样本和整天基本满足同一分布。 统计学习和机器学习区别:统计学习是根据样本模拟总体规律进而去预测(当然要比对样本和总体的统计量是否一致&…

C++读取大文件三种方法速度比较

目录 测试说明第一种方法:按块读,一次读8kb第二种方法:按行读,一次读一行第三种方法:多线程并行读取完整示例 测试说明 测试文件:100万行,每一行是两个小数,中间用逗号隔开&#xf…

高级java每日一道面试题-2024年10月2日-分布式篇-什么是FLP 不可能性定理?

如果有遗漏,评论区告诉我进行补充 面试官: 什么是FLP 不可能性定理? 我回答: 在Java高级面试中,FLP不可能性定理是一个可能涉及的重要分布式系统理论。以下是对FLP不可能性定理的详细解析: FLP 定理背景 在分布式计算领域,共…

Pycharm常用快捷键

代码编辑 注释/取消注释:ctrl / 折叠代码:ctrl - 展开代码:ctrl 导航 转到函数实现:ctrl b 或 ctrl 鼠标左键 向前导航:ctrl alt 左箭头 向后导航:ctrl alt 右箭头 查找与替换 在当前文件…

MySQL总结

先是数据库的基本介绍和库的操作:MySQL 库 基础操作-CSDN博客 再是MySQL表的操作:CRUD工程师必会:MySQL 表 的操作(全)-CSDN博客 MySQL事务:MySQL事务-CSDN博客 MySQL索引:MySQL索引-CSDN博客…

【QT Quick】C++交互:暴露 C++ 对象到 QML

【QT Quick】C交互:暴露 C 对象到 QML 在 Qt Quick 开发中,使用 Context Property 将 C 对象暴露给 QML 是一种直观有效的方式。这种方法允许我们直接在 QML 中访问 C 对象的属性和方法,而无需使用信号和槽。这篇文章将详细展开如何通过 Con…

泰勒图 ——基于相关性与标准差的多模型评价指标可视化比较-XGBoost、sklearn

1、基于相关性与标准差的多模型评价指标可视化比较 # 数据读取并分割 import pandas as pd import numpy as np import matplotlib.pyplot as plt from sklearn.model_selection import train_test_split plt.rcParams[font.family] = Times New Roman plt.rcParams[axes.unic…