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

需求:

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值