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)#函数调用

    四、运行结果:

    部分结果展示:

  • 相关阅读:
    Linux之文件处理命令
    Linux基础命令
    rip实验
    Linux基础之磁盘分区
    mysql安装
    centos Apache、php、mysql默认安装路径
    You probably tried to upload too large file. Please refer to documentation for ways to workaround this limit.
    Wrong permissions on configuration file, should not be world writable!
    机器会学习么 学习总结
    实验 5 Spark SQL 编程初级实践
  • 原文地址:https://www.cnblogs.com/Wang1107/p/12074030.html
Copyright © 2011-2022 走看看