zoukankan      html  css  js  c++  java
  • 寒假大数据学习笔记十一

      今天从山西卫健委官网上爬取新型冠状病毒疫情有关内容的数据。到发博客为止我只做了一半,只是将相关文字爬取下来,还没有经过处理。那么主要说一说我碰到的问题吧。主要就是爬取网页的文字内容时受到网页标签的影响,难以规范地取得我想要的内容,影响包括但不限于各种稀奇古怪的位置上出现的换行符、空格、制表符。同时爬取下来的网页还是一大块,因为我并不能一下子得到我想要的数据,所以这一大块网页我还要分成几个小部分单独去处理直到得到有关数据。话不多说,代码如下:

     1 # -*- coding: utf-8 -*-
     2 import scrapy
     3 from scrapy import Request
     4 import re
     5 import os
     6 
     7 
     8 class SxgzbdSpider(scrapy.Spider):
     9     name = 'sxgzbd'
    10     allowed_domains = ['wjw.shanxi.gov.cn']
    11     start_urls = ['http://wjw.shanxi.gov.cn/yqfbl05/index.hrh']
    12 
    13     def parse(self, response):
    14         context = ""
    15         str1 = ""
    16         if response.url == 'http://wjw.shanxi.gov.cn/yqfbl05/index.hrh':
    17             sxurls = response.xpath(
    18                 "//div[@class='demo-right']//li/a[contains(@title,'新型冠状病毒')]/@href").extract()
    19             for i in sxurls:
    20                 yield Request(i)
    21         else:
    22             data = response.xpath(
    23                 "//div[@class='artxx']/text()").re("2020-dd-dd")
    24             contexts = response.xpath(
    25                 "//div[@class='ze-art']//text()").extract()
    26             for i in contexts:
    27                 context += i
    28             # 将所有的换行符换成一个空格
    29             context = re.sub('
    +', ' ', context)
    30             # 将所有的空格换成一个空格
    31             context = re.sub(' +', ' ', context)
    32             # 将所有的制表符换成一个空格
    33             context = re.sub('	+', ' ', context)
    34             # 将所有的空格换成一个换行符
    35             context = re.sub(' +', '
    ', context)
    36             # 如果alldata文件存在,删除
    37             if os.path.exists("alldata.txt"):
    38                 os.remove("alldata.txt")
    39             # 追加写入
    40             with open("alldata.txt", 'a') as p:
    41                 p.write(context)
    42             # 读出文件内容为字符串
    43             f = open("alldata.txt", "r")
    44             for line2 in f:
    45                 str1 = line2
    46             # 根据换行符分割
    47             finalstr = str1.split("
    ")
    48             for i in finalstr:
    49                 if len(i) > 70:
    50                     if os.path.exists(str(i[:9])+".txt"):
    51                         os.remove(str(i[:9])+".txt")
    52                     with open(str(i[:9]) + ".txt", 'a') as p:
    53                         p.write(i)
    View Code
  • 相关阅读:
    three.js 制作一个三维的推箱子游戏
    three.js 郭先生制作太阳系
    three.js 制作魔方
    three.js 欧拉角和四元数
    mysql
    重装系统后需要安装的软件
    python3.7 安装PyQt5
    Java读取文件
    linux 环境jdk安装
    linux 修改用户字符集
  • 原文地址:https://www.cnblogs.com/YXSZ/p/12291159.html
Copyright © 2011-2022 走看看