一、题目:

  获取并保存目标网站的下图所示的所有英文名,网页转换通过点击more names刷新名字并将各个英文名子目录下,去获取并保存每一个英文名的名字、性别、寓意、简介如下图所示内容红色标记框内的内容:

 二、爬取步骤:

1.数据服务

爬取步骤:

  (1)爬取整个动态网页信息内容;

  (2)解析网页内容,利用正则表达式获取有效信息;

  (3)把爬取下来的信息采用csv进行存储;

  (4)进行必要的手动的数据清理和美化。

2.解析服务

解析步骤:

  (1)利用headers直接访问网页内容;

  (2)爬取页面信息;

  (3)解析页面;

  (4)形成text数据。

  (5)实时获得网站的英文名、性别、寓意、简介等内容。

流程图:

三、源代码:

按步骤要求一步一步将数据爬取并保存。

 import requests#请求库
import re#表达式解析库
import csv
def html_save(s):#爬取内容保存函数
with open('save3.csv','a', newline='')as f:#以追加的方式存数据newline控制文本模式之下,一行的结束字符
writer = csv.writer(f)#将数据写入csv文件
writer.writerow(s) def get_url(n):#保存网址
urls=[]
for i in range(1,101):#测试得出网址范围
urls.append('http://www.nymbler.com/nymbler/more/%s'%i)
return urls
pass def get_detail(url):#对网页内容进行解析获取
headers = {'Cookie':"heroku-session-affinity=AECDaANoA24IAaj0sYj+//8HYgAH2hNiAAsB42EDbAAAAANtAAAABXdlYi4zbQAAAAV3ZWIuMm0AAAAFd2ViLjFqTiF9lGfQyz4HBcluZEIivsLibgo_; PLAY_SESSION=e625836109d6e09af14be41657c35e808ca31e72-session_id=240bcff7-ebb5-49ee-8fa4-ffcc5ba32e48; _ga=GA1.2.408125030.1575511582; _gid=GA1.2.1377013858.1575511582; td_cookie=18446744071831041204; _gat_gtag_UA_1763772_1=1"}#反爬虫请求头
response = requests.post(url)#解析网页
docx=(response.text)#得到解析文本
name=re.findall(r'"name":"([^"]+)"',docx)#正则匹配name的value
gender=re.findall(r'"gender":"([^"]+)"',docx) #正则匹配gender的value
info=re.findall(r'"info":"([^"]+)"',docx)
meaning=re.findall(r'"meaning":"([^"]+)"',docx)
for i in range(len(meaning)):#将获取的信息进行有序处理
tmp=[]
tmp.append(name[i])
tmp.append(gender[i])
tmp.append(meaning[i])
tmp.append(info[i])
html_save(tmp)#对信息进行保存
return tmp
pass def get_all(n):#获取所有网页的信息
alldata=[]
for url in get_url(n):
alldata.extend(get_detail(url))#将get_url(n)内的所有网页一一进行解析保存
return alldata
pass get_all(100)#函数调用

四、运行结果:

部分结果展示:

最新文章

  1. mybatis传入多个参数
  2. 【转】微信公众账号 Senparc.Weixin.MP SDK 开发教程 索引
  3. nosql(1)---radis
  4. c#使用正则表达式替换html标签
  5. 创建新进程,就三个函数CreateProcessAsUser CreateProcessWithLogonW CreateProcessWithTokenW(附网友的流程)
  6. trate
  7. mysql online ddl2
  8. windows系统-web渗透工具-AWVS
  9. ubuntu 下安装 apache php mysql
  10. if语句之猜拳
  11. HDFS中namenode启动失败
  12. 5. 跟踪标记 (Trace Flag) 834, 845 对内存页行为的影响
  13. Android开发中遇到的问题(一)——Android模拟器端口被占用问题的解决办法
  14. dock容器操作命令
  15. mobx 知识点
  16. vc2008中mfc菜单、控件等汉字显示为问号或乱码的解决方法
  17. document.write vs document.getElementById
  18. 6-[多线程]-互斥锁、GIL、死锁、递归锁、信号量
  19. Java Web用Freemarker生成带图片的Word文档
  20. svn更新报错:出现skipped:目标路径

热门文章

  1. 20190608_浅谈go&java差异(三)
  2. 2、netty第一个例子,简单的http服务器
  3. orm终极大爆炸
  4. 清除Windows系统图标缓存
  5. 2.华为路由交换技术_TCP/IP参考模型
  6. 上手OrangePi Zero+
  7. MySQL常用SQL语句总结
  8. el-dialog模态窗点击空白不消失
  9. cocos2d-x 新工程的把玩
  10. goweb-搭建服务