你能把我带走吗?python:走吧
最近学习了点python爬虫的知识,今天给大家分享一个超级简单的案例,爬取四级词汇5000多个,包括单词,意思,音标和读音地址,很有意思,哈哈,话不多说,让我们开始吧 !
1.分析目标网站
四级必备词汇词汇_四级必备词汇单词表_四级必备词汇在线背单词_四级必备词汇免费背单词课程_爱词吧_金山词霸旗下背单词网站爱词霸吧背单词为您提供:四级必备词汇免费背单词课程,四级必备词汇词汇表,四级必备词汇单词表,四级必备词汇词汇下载。在这里,您可以轻轻松松高效的背单词,轻松了解各种单词记忆法,快速的记忆英语词汇。https://word.iciba.com/?action=courses&classid=11
首页一共有226课,每一个有20个单词
每一课有两页,一页有十个单词
点击第一课时,url会跳到
https://word.iciba.com/?action=words&class=11&course=1
点击第二课时,url会跳到
https://word.iciba.com/?action=words&class=11&course=2
点击第三课时,url会跳到
https://word.iciba.com/?action=words&class=11&course=3
以此类推,可以观察出,url中的course参数就是决定了当前是第几课
2.获取第一课单词
首先应该先确定要抓取的单词是否在网页的源代码中,如果在就简单了,注意,这里要点击查看网页源代码,而不是使用检查,因为检查的代码,可能使用了异步请求等技术,二次渲染了页面,所以这里有个坑,注意查看网页源代码
然后 Ctrl + F 搜索单词 comment ,发现网页中有,nice
那就直接写代码了
1. 导入requests库
import requests
2. 模拟headers,防止网站反爬
# 模拟请求头,防止反爬
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36"
}
3. 编写请求地址
url = "https://word.iciba.com/?action=words&class=11&course=1"
4. 使用requests库发起get请求,获取网页内容
resp = requests.get(url=url, headers=headers)
print(resp)
5. 查看响应,200没问题
<Response [200]>
6. 查看单词在网页的结构
7. 使用xpath解析HTML
from lxml import etree
# 解析HTML
tree = etree.HTML(resp.text)
我们发现两页其实就是第一个ul里装了10个单词,第二个ul里装了10个单词,这时可以使用循环替换ul[1],ul[2]来循环获取这两页的20个单词,代码如下:
# 解析HTML
tree = etree.HTML(resp.text)
# 因为有两页,循环大法
for i in range(1, 3):lis1 = tree.xpath(f"/html/body/div[2]/div[1]/form/div[1]/ul[{i}]/li")for j in lis1:# 解析单词word = j.xpath("./div[1]/span/text()")[0].strip()# 解析音标pronunciation = j.xpath("./div[2]/a/@id")[0].strip()# 解析意思symbols = j.xpath("./div[2]/strong/text()")[0].strip()# 解析链接mean = j.xpath("./div[3]/span/text()")[0].strip()print(word)print(pronunciation)print(symbols)print(mean)
结果如下,这里仅展示两个单词的数据
<Response [200]>
comment
https://res.iciba.com/resource/amp3/oxford/0/f4/ca/f4ca8f1ef7bd221775ba33cef5db6fb7.mp3
[ˈkɔment]
n. 评论,意见;体现,写照
plate
https://res.iciba.com/resource/amp3/oxford/0/5a/21/5a21852c383fc3c36cfba1f4e9f23dd3.mp3
[pleit]
vt. 电镀 n. 盘子,盆子; 金属...
3.使用循环获取所有课的单词
前面已经分析了,不同课的区别就是 course 参数在变化,这时候我们也实现了对其中一课单词的获取,所以现在只需要使用循环,动态设置i请求url模拟第几课的切换,然后发起请求,获取单词,就是上面写的内容了
import requests
from lxml import etree# 写爬虫得把网站结构摸透了,思路清晰
# 模拟请求头,防止反爬
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36"
}
# 循环网站的227课,每一个有两页,每一页有10个单词,共计4509个单词
for k in range(1, 227):print(f'{k - 1}页下载完成// {k - 1}/225')# 处理url,循环大法对每一课进行请求url = f"https://word.iciba.com/?action=words&class=11&course={k}"resp = requests.get(url=url, headers=headers)# 解析HTMLtree = etree.HTML(resp.text)# 因为有两页,循环大法for i in range(1, 3):lis1 = tree.xpath(f"/html/body/div[2]/div[1]/form/div[1]/ul[{i}]/li")for j in lis1:# 解析单词word = j.xpath("./div[1]/span/text()")[0].strip()# 解析音标pronunciation = j.xpath("./div[2]/a/@id")[0].strip()# 解析意思symbols = j.xpath("./div[2]/strong/text()")[0].strip()# 解析链接mean = j.xpath("./div[3]/span/text()")[0].strip()# 组装一行的内容,包括单词,音标,意思,读音链接line = [word, symbols, mean, pronunciation]print(line)
4.数据持久化,csv模块
数据持久化,这里使用csv模块
1.导入csv模块
import csv
2.文件写入
这里意思是打开文件word.csv,‘a’意思是追加写入,编码为utf-8,然后使用csv.wirter(f)获取到输出对象,输出对象向文件中写一行
with open('word.csv', 'a', encoding="utf-8") as f:# 获取输出对象writer = csv.writer(f)# 使用输出对象向csv文件写入一行writer.writerow(line)
5.关流,好习惯
最后,关闭文件流和资源流,好习惯!
# 关闭链接resp.close()
# 关流
f.close()
6.查看结果
打开csv文件,看看自己的成果吧!
7.完整代码
import requests
from lxml import etree
import csv# 写爬虫得把网站结构摸透了,思路清晰
# 模拟请求头,防止反爬
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36"
}
# 循环网站的227课,每一个有两页,每一页有10个单词,共计4509个单词
for k in range(1, 227):print(f'{k - 1}页下载完成// {k - 1}/225')# 处理url,循环大法对每一课进行请求url = f"https://word.iciba.com/?action=words&class=11&course={k}"resp = requests.get(url=url, headers=headers)# 解析HTMLtree = etree.HTML(resp.text)# 因为有两页,循环大法for i in range(1, 3):lis1 = tree.xpath(f"/html/body/div[2]/div[1]/form/div[1]/ul[{i}]/li")for j in lis1:# 解析单词word = j.xpath("./div[1]/span/text()")[0].strip()# 解析音标pronunciation = j.xpath("./div[2]/a/@id")[0].strip()# 解析意思symbols = j.xpath("./div[2]/strong/text()")[0].strip()# 解析链接mean = j.xpath("./div[3]/span/text()")[0].strip()# 组装一行的内容,包括单词,音标,意思,读音链接line = [word, symbols, mean, pronunciation]print(line)# csv 写入文件with open('word.csv', 'a', encoding="utf-8") as f:# 获取输出对象writer = csv.writer(f)# 使用输出对象向csv文件写入一行writer.writerow(line)# 关闭链接resp.close()
# 关流
f.close()
你能把我带走吗?python:走吧相关推荐
- python风变编程能找工作_没有永远的工作,只有永远的“就业力”,风变编程Python走起...
不怕老板又裁员,风变编程Python走到哪里都有饭碗 没有永远的工作,只有永远的"就业力",风变编程Python走起 "过完年再说"这句话在职场中似乎已经有了 ...
- 蓝桥杯 python 走迷宫 BFS
蓝桥杯 python 走迷宫 BFS 题目描述 给定一个 N × × × M 的网格迷宫 G.GG的每个格子要么是道路,要么是障碍物(道路用 1 表示,障碍物用 0 表示). 已知迷宫的入口位置为 ( ...
- python打包安卓的方法_30个你想打包带走的Python技巧(下)
16. 显示猫猫 我终于找到了一个充分的借口可以在我的文章中显示猫猫了,哈哈!当然,你也可以利用它来显示图片.首先你需要安装 Pillow,这是一个 Python 图片库的分支: pip3 insta ...
- python走迷宫_Python使用Tkinter实现机器人走迷宫
这本是课程的一个作业研究搜索算法,当时研究了一下Tkinter,然后写了个很简单的机器人走迷宫的界面,并且使用了各种搜索算法来进行搜索,如下图: 使用A*寻找最优路径: 由于时间关系,不分析了,我自己 ...
- linu安装python走到300就不动了_linux centos 安装python3.7报错会在load avg: 0.63 [307/416] test_socket卡住 解决办法...
在安装python3.7过程中,一般会很顺利的安装完成. 但是今天在安装一台虚拟机的时候报错了.#环境检查命令 ./configure --prefix=/usr/local/python376 -- ...
- python走后端路线_python后端学习路线
人工智能时代,想要从事编程行业,最佳的学习语言是什么?当然是Python!Python入门简单.功能强大,已成为各大企业首选开发语言,也吸引了无数有志学子投身学习.下面是小编为您整理的关于python ...
- python编程绘制楼梯_Python走楼梯问题解决方法示例
本文实例讲述了Python走楼梯问题解决方法.分享给大家供大家参考,具体如下: # -*- coding:utf-8 -*- #!python3 ''' 下楼问题.从楼上走到楼下共有h个台阶,每一步有 ...
- python第三方库有哪些-我常用的几个第三方 Python 库
我常用的几个第三方 Python 库 今天公司停电,没上班.跑上来更新个博客,跟大家分享一下我常用的几个第三方 Python 库.Python 语言之所以能够如此流行,除了本身内置许多程序库来保障快速 ...
- 转行做python现在怎么样_本人现在大三之前是学习网络的,现在想转行做python程序员,该如何学习?...
作为一名计算机专业的教育工作者,我来回答一下这个问题. 首先,对于网络专业的同学来说,如果要想在大三开始重点学习Python编程,并计划未来从事专业的Python开发,在学习上需要从三个方面做好准备, ...
- 骚操作!曾经爱过!用 Python 清理收藏夹里已失效的网站
失效的书签们 我们日常浏览网站的时候,时不时会遇到些新奇的东西( 你懂的.jpg ),于是我们就默默的点了个收藏或者加书签.然而当我们面对成百上千的书签和收藏夹的时候,总会头疼不已-- 尤其是昨天还在 ...
最新文章
- 如何来玩MNIST数据集?
- Linux 服务器带宽异常跑满分析解决
- centos llvm安装_在CentOS上编译安装llvm-3.8.1详细教程
- XCode连接手机时提示A Valid provisioning profile for this executable was not found
- MySQL数据库创建及删除操作
- php fgetcsv函数,PHP中的fgetcsv()函数
- 谷歌浏览器怎么设置点击书签 谷歌浏览器如何设置点击书签
- android获取app内存信息,Android 获取内存信息(RAM,ROM)
- 深入了解前端开发中的高度、宽度问题
- 排列组合计算问题中的卡塔兰数(Catalan Number)
- 添加内核驱动模块(1)(mydriver.c+ Konfig+Makefile )
- python绘制箱线图-python绘制箱线图
- google手机等相关产品{时间不同步}最简解决方法
- 【新知实验室】TRTC体验
- 上位机发送与接收下位机数据
- 阿里CEO盒马内部演讲实录:跑得久才是最关键的
- Kali Linux介绍(安装教程)
- 电脑无法开机一直滴滴响
- 基于Web的二手房爬虫系统案例
- Real-world Anomaly Detection in Surveillance Videos【CVPR 2018】(首次引入MIL)