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

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

需求:

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.lryc.cn/news/454161.html

相关文章:

  • 端模一体,猎豹移动对大模型机器人发展路径清晰
  • 操作系统笔记
  • 两个wordpress网站共用一个数据库的数据表
  • 工具方法 - 面试中回答问题的技巧
  • 频繁full gc问题排查及解决
  • 昇思学习打卡营第33天|基于MindSpore的恶性皮肤肿瘤识别
  • 基于SpringBoot+Vue的网约车管理系统
  • Java、PHP、ASP、JSP、Kotlin、.NET、Go
  • 华为-单臂路由
  • AI应用的东风,奥特曼不想错过
  • LeetCode[中等] 238. 除自身以外数组的乘积
  • Linux plt表调用汇编代码分析
  • ubunut声卡配置 播放视频没有声音的解决方法 蓝牙问题
  • 《软件工程概论》作业一:新冠疫情下软件产品设计
  • 大厂出来的人为什么不比你高效?
  • 71.【C语言】动态内存管理(重点)(4)
  • JavaScript 用HTML5约束验证API做表单验证
  • Unity 编辑器多开
  • 【Spring Boot React】Spring Boot和React教程 完整版
  • Linux中的多线程
  • 《计算机原理与系统结构》学习系列
  • 征程6 工具链常用工具和 API 整理(含新手示例)
  • 我有一张图,我怎么让midjourney按照这张图继续生成呢?
  • MSF捆绑文件
  • 01_SQLite
  • 【STM32开发笔记】移植AI框架TensorFlow到STM32单片机【下篇】
  • 畅阅读小程序|畅阅读系统|基于java的畅阅读系统小程序设计与实现(源码+数据库+文档)
  • 【机器学习(十一)】糖尿病数据集分类预测案例分析—XGBoost分类算法—Sentosa_DSML社区版
  • 二分查找一>寻找峰值
  • 《Linux从小白到高手》理论篇:深入理解Linux的网络管理