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

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

需求:

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.text
    def get_list_data(self,data):#列表页
        #//div[@class="box labelbox"]/h4/a/@href
        xml=etree.HTML(data)
        hrefs = xml.xpath('//div[@class="box labelbox"]/h4/a/@href')
        # print(hrefs)
        return hrefs
    def 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.kler.cn/news/335697.html

相关文章:

  • 程序bug的修复
  • C# 文件与文件夹操作指南:深入探索流、文件流及文件夹管理
  • ReGCL Rethinking Message Passingin Graph Contrastive Learning
  • Python知识点:如何使用Edge Impulse与Python进行机器学习模型部署
  • 实现mnist手写数字识别
  • Elasticsearch——数据聚合、数据同步与集群搭建
  • vscode提交修改Failed to connect to github.com port 443: Timed out
  • 研究生系统化入门教程(四)【机器学习】分类算法:决策树(信息熵,信息增益);集成学习方法之随机森林:估计器的工作流程是什么?为何采用BootStrap抽样?
  • Redis:cpp.redis++通用接口
  • Prometheus+Grafana备忘
  • T-Sql分支判断语句
  • 排版套料系统设计说明
  • 算法修炼之路之二分查找
  • 影刀RPA实战:Excel拆分与合并工作表
  • cnn突破五(三层bpnet网络公式)
  • Python(四)——元组
  • No.8 笔记 | SQL 查询语句:数据探索的钥匙
  • STM32PWM应用
  • Python中的观察者模式:从基础到实战
  • detectron2/layers源码笔记