从网站下载单词库

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)

没有使用线程。

用python从网页下载单词库的更多相关文章

  1. Python——pip快速下载第三方库到指定环境

    pip install Scikit-learn --target=C:/Users/Jery/PycharmProjects/play/venv/Lib/site-packages -i https ...

  2. Python用pip安装第三方库时换源下载

    pip默认是从Python官网下载第三方库,从国外下载当然不如从国内下载来得快 豆瓣:https://pypi.doubanio.com/simple 还有其它源,阿里云等等,一个就够用了 用pip安 ...

  3. Python使用urllib,urllib3,requests库+beautifulsoup爬取网页

    Python使用urllib/urllib3/requests库+beautifulsoup爬取网页 urllib urllib3 requests 笔者在爬取时遇到的问题 1.结果不全 2.'抓取失 ...

  4. 用 python 实现一个多线程网页下载器

    今天上来分享一下昨天实现的一个多线程网页下载器. 这是一个有着真实需求的实现,我的用途是拿它来通过 HTTP 方式向服务器提交游戏数据.把它放上来也是想大家帮忙挑刺,找找 bug,让它工作得更好. k ...

  5. Python中导入第三方声源库Acoular的逻辑解释以及Acoular的下载

    [声明]欢迎转载,但请保留文章原始出处→_→ 秦学苦练:http://www.cnblogs.com/Qinstudy/ 文章来源:http://www.cnblogs.com/Qinstudy/p/ ...

  6. Python爬虫、自动化常用库&帮助文档URL

    一.Python下载地址 Windows终端Cmder.exe下载--->http://cmder.net/ Python下载(Windows)        ---> https://w ...

  7. 用python做网页抓取与解析入门笔记[zz]

    (from http://chentingpc.me/article/?id=961) 事情的起因是,我做survey的时候搜到了这两本书:Computational Social Network A ...

  8. Python爬虫--- 1.1请求库的安装与使用

    来说先说爬虫的原理:爬虫本质上是模拟人浏览信息的过程,只不过他通过计算机来达到快速抓取筛选信息的目的所以我们想要写一个爬虫,最基本的就是要将我们需要抓取信息的网页原原本本的抓取下来.这个时候就要用到请 ...

  9. python调用c++/c 共享库,开发板上编译的一些坑!

    1.对于python,ctypes只能load动态库,但现在我的对象是一个静态库,而且我没有源代码,静态库在编译过程中没有加--fPIC参数,所以我也没办法将其编译为动态库,有没有什么方法在pytho ...

  10. Android Studio 更换国内源下载依赖库

    我的博客:http://daycoding.com 小小程序猿 由于国内GFW的原因,经常导致android studio 莫名其妙的编译不了,多数原因是由于不能下载依赖库 Gradle支持三种不同的 ...

随机推荐

  1. 【分析笔记】NXP PCF85263 设备驱动分析笔记

    驱动移植 供应商无法提供相应的驱动程序,不过在 linux 最新的内核倒是有一份 pcf85363 的驱动,看代码并核对寄存器功能,是可以兼容 pcf85263 芯片.只是我们用的内核比较老 linu ...

  2. 教你解决虚拟机用不了USB设备的苦恼。

    如果你看见了上图的效果说明我们的苦恼是一样一样的. vm10 vm11 vm player都有这个问题!!!!  对不对?哈哈 . 在虚拟机右击设备点击连接(Connect) 然后听见你的电脑发出了硬 ...

  3. 12月7日内容总结——jQuery查找标签、操作标签、事件和动画效果,Bootstrap页面框架的介绍和使用讲解

    目录 一.jQuery查找标签 基本选择器 层级选择器 基本筛选器 属性选择器 表单筛选器 筛选器方法 二.操作标签 样式操作(class操作) 位置操作 尺寸 文本操作 创建标签 属性操作 文档处理 ...

  4. drf-jwt源码分析以及自定义token签发认证、alc和rbac

    1.drf-jwt源码执行流程 1.1 签发(登录) 1.代码: urls.py: from rest_framework_jwt.views import obtain_jwt_token urlp ...

  5. Mat数据结构

    1.MAT类: OpenCV从2001年开始发展,在最初使用的是c语言,使用的是IplImage数据结构来存储图像,但是最大的问题需要手动申请释放内从( manual memory managemen ...

  6. 删除resource中的图片后编译报错

    同僚的一篇文章是:https://www.cnblogs.com/jljxxf/archive/2012/08/19/2646937.html, 详细介绍了C#的Resources,其中关于删除资源这 ...

  7. 在react项目如何捕获错误

    在React项目是如何捕获错误的? 一.是什么 错误在我们日常编写代码是非常常见的 举个例子,在react项目中去编写组件内JavaScript代码错误会导致 React 的内部状态被破坏,导致整个应 ...

  8. LG P3653 小清新数学题

    \(\text{Poblem}\) 求 \(\sum_{i=l}^r \mu(i)\) \(1 \le l,r \le 10^{18}, r - l \le 10^5\) \(\text{Analys ...

  9. 跳板攻击之:NPS代理转发

    跳板攻击之:NPS代理转发 目录 跳板攻击之:NPS代理转发 1 NPS介绍 2 NPS特点 3 实验环境 3.1 实验准备 3.2 实验拓扑 3.3 NPS配置 3.3.1 conf/nps.con ...

  10. The size of the request headers is too long.

    当 IIS7/7.5 收到的请求头的长度超过16K(默认值),就会引发"Bad Request - Request Too Long. HTTP Error 400. The size of ...