zoukankan      html  css  js  c++  java
  • Python爬虫大作业

    一、题目:

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

     二、爬取步骤:

    1.数据服务

    爬取步骤:

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

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

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

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

    2.解析服务

    解析步骤:

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

      (2)爬取页面信息;

      (3)解析页面;

      (4)形成text数据。

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

    流程图:

     三、源代码:

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

     1 import requests#请求库
     2 import re#表达式解析库
     3 import csv
     4 def html_save(s):#爬取内容保存函数
     5     with open('save3.csv','a', newline='')as f:#以追加的方式存数据newline控制文本模式之下,一行的结束字符
     6         writer = csv.writer(f)#将数据写入csv文件
     7         writer.writerow(s)
     8 
     9 def get_url(n):#保存网址
    10     urls=[]
    11     for i in range(1,101):#测试得出网址范围
    12         urls.append('http://www.nymbler.com/nymbler/more/%s'%i)
    13     return urls
    14     pass
    15 
    16 def get_detail(url):#对网页内容进行解析获取
    17     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"}#反爬虫请求头
    18     response = requests.post(url)#解析网页
    19     docx=(response.text)#得到解析文本
    20     name=re.findall(r'"name":"([^"]+)"',docx)#正则匹配name的value
    21     gender=re.findall(r'"gender":"([^"]+)"',docx) #正则匹配gender的value
    22     info=re.findall(r'"info":"([^"]+)"',docx)
    23     meaning=re.findall(r'"meaning":"([^"]+)"',docx)
    24     for i in range(len(meaning)):#将获取的信息进行有序处理
    25         tmp=[]
    26         tmp.append(name[i])
    27         tmp.append(gender[i])
    28         tmp.append(meaning[i])
    29         tmp.append(info[i])
    30         html_save(tmp)#对信息进行保存
    31     return tmp
    32     pass
    33 
    34 def get_all(n):#获取所有网页的信息
    35     alldata=[]
    36     for url in get_url(n):
    37         alldata.extend(get_detail(url))#将get_url(n)内的所有网页一一进行解析保存
    38     return alldata
    39     pass
    40 
    41 get_all(100)#函数调用

    四、运行结果:

    部分结果展示:

  • 相关阅读:
    看完动画你还会不懂 快速排序么
    看动画轻松理解时间复杂度(一)
    LeetCode Animation 题目图解汇总(持续更新中...)
    分而治之,归并排序的动画演示
    在Object-C中学习数据结构与算法之排序算法
    iOS面试准备之思维导图
    .net core跨域设置
    .NET Core WebAPI Swagger使用
    vue-resource emulateJSON的作用
    百度地图API简单初始化
  • 原文地址:https://www.cnblogs.com/Wang1107/p/12074030.html
Copyright © 2011-2022 走看看