惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

WordPress大学
WordPress大学
Jina AI
Jina AI
小众软件
小众软件
GbyAI
GbyAI
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 【当耐特】
D
DataBreaches.Net
腾讯CDC
V
Visual Studio Blog
博客园 - 叶小钗
B
Blog
Apple Machine Learning Research
Apple Machine Learning Research
T
The Blog of Author Tim Ferriss
S
SegmentFault 最新的问题
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
V
V2EX
博客园 - 三生石上(FineUI控件)
云风的 BLOG
云风的 BLOG
The Cloudflare Blog
MongoDB | Blog
MongoDB | Blog
有赞技术团队
有赞技术团队
U
Unit 42
博客园 - 司徒正美
博客园 - 聂微东

博客园 - daivlin

layuimini模板的快速浏览方法 inux mint使用 迅雷电影天堂 2025-02-08[] GIS图模解析工具 常用工具下载链接 数据分析学习 如何将手机微信公众号文章导出到办公电脑 U盘插上电脑上后自动备份文件 web.py 中的分页设计 python 通过win32com操作vcf到outlook中,同时解决乱码问题 pythonanywhere 部署 webpy linux mint 中文支持 django学习记录 用python脚本通过excel生成文件夹树结构 selenium + phantomjs 爬取落网音乐 centos 安装 python2.7 运行webpy 项目 跳过 centos部署 webpy的各种坑 unix&linux大学教程 目录
用python从网页下载单词库
daivlin · 2022-09-21 · via 博客园 - daivlin

从网站下载单词库

1 每一页有几百个单词
2 每一个单词有独立的URL,URL中包含单词的中文解释
3 使用的库 requests,pyquery,web

#coding:utf-8

import requests as rq
from pyquery import PyQuery as pq
import web
import threading

db = web.database(dbn="sqlite",db="gre.db")


def initDB():
    _initSQL = """
        CREATE TABLE IF NOT EXISTS gre_word(
            id INTEGER PRIMARY KEY,
            word VARCHAR(200),
            meaning VARCHAR(200)
        )
    """
    db.query(_initSQL)

def get_html(url):
    """获取html文档"""
    headers={
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36'
    }    
    response = rq.get(url=url,headers=headers)
    return response.content

def get_words(html):
    """
        获取单词表,返回值:[(单词,单词链接)]
    """
    url_pre = "https://www.koolearn.com"
    word = pq(html)
    words = [(i.text(),"{}{}".format(url_pre,i.attr("href"))) for i in word(".word-box a.word").items()]
    return words

def insert_words(word,meaning):
    """插入单词"""
    db.insert(
        "gre_word",
        word = word,
        meaning = meaning,
    )
    print("insert ok!")
        
def get_word_meaning(wordURL):
    """获取单词含义"""
    doc = pq(get_html(wordURL))
    try:
        meaning = doc("li.clearfix").text()
    except:
        meaning = ""
    return meaning
    
if __name__ == "__main__":
    url = "https://www.koolearn.com/dict/tag_921_{}.html"
    import time
    startT = time.time()
    db.delete("gre_word",where="1")
    for i in range(1,31):
        html_ = get_html(url.format(i))
        words = get_words(html_)
        with db.transaction():
            for j in words:
                word,meaning = j[0],get_word_meaning(j[1])
                insert_words(word,meaning)
    endT = time.time()
    print(endT - startT)

没有使用线程。