成语接龙小程序

本文介绍了一个成语接龙小程序的设计过程,包括创建本地成语库、设计查找程序、构建简单界面、触发函数及将文件转换为.exe。通过爬虫从在线成语网站抓取数据,利用汉语拼音转换实现成语接龙功能,并使用PyInstaller将程序打包成可执行文件。
摘要由CSDN通过智能技术生成

成语接龙小程序

1.设计目标概述

​ 设计一个小程序,能在桌面上打开,有简单的界面,查找到输入该成语可以接龙的成语(即查询与该成语最后一个字谐音的所有成语)

2.设计思路

1.首先创建本地成语库

2.编写成语查找程序,即在创建好的成语库中查找到目标成语

3.设计简单的界面

4.设计触发函数

5.将文件转换成.exe类型文件然后放在桌面上使用。

3.设计步骤
1.创建本地的成语库

​ 使用爬虫,将目标成语网站上的成语爬取下来保存到本地的CSV文件中

1.目标网站

在线成语网站

进入该网站会发现所有的成语可以按照首字母检索

在这里插入图片描述

点击A会发现页面的url是http://chengyu.t086.com/list/A_1.html

该页面是以A为首字母开头的第一页

不难发现,url的规律就是http://chengyu.t086.com/list/ +首字母 +_当前页数+.html

2.解析网页

打开任意页面,检查网页源代码

在这里插入图片描述

分析网页,不难发现,每页的每一个成语都是包含在<div class=“title”>下的<ul>下的<li>中

因此,可以直接使用xpath提取目标信息

3.数据获取

使用requests 的get方法

该网页的编码方式是 gbk 格式 需要将格式转换一下即 response.content.decode("gbk")

response=requests.get(url)
    text=response.content.decode("gbk")#网页的编码方式是“gbk”,经过该操作之后返回的是字符串
    html = etree.HTML(text)
content= html.xpath("//div[@class='listw']/ul/li//text()")

4.数据保存

将获取的数据保存在本地的CSV文件中

with open("成语大全.csv","a",newline="") as f:
        writer=csv.writer(f)
        writer.writerow(content)

5.细节

​ 在爬虫调度器中,使用了使用了try机制判断循环循环产生的url是否有效,如果有效,请求页面,提取信息,如果无效,则表示在该字母开头的页面已经访问完,跳出该字母页面的访问循环,进行下一个字母开头的页面循环

​ 构造首字母列表是因为有些字母并没有对应的成语,于是人工构造一个列表,然后循环读取使用。

6.源代码展示

# -*- coding:utf-8 -*-  
"""
item:爬取成语
author:Jonty
"""
import requests
from lxml import etree

import csv
import urllib.request


def get(url):
    """
    获取详细页的成语,将其写入CSV文件
    :return:
    """
    response=requests.get(url)
    text=response.content.decode("gbk")#网页的编码方式是“gbk”,经过该操作之后返回的是字符串
    html = etree.HTML(text)
    content= html.xpath("//div[@class='listw']/ul/li//text()")#返回的是列表
    with open("成语大全.csv","a",newline
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值