• 寒假大数据学习笔记十一


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

     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
  • 相关阅读:
    python_workone
    python___"TypeError: 'module' object is not callable"
    显示pycharm的行号
    pycharm切换python版本
    yum安装pip
    informix数据库常用命令(转)
    eclipse打不开的解决办法
    linux修改时间大全
    在安装mysqli的时候,出现error: ext/mysqlnd/mysql_float_to_double.h: No such file or directory
    Amazon Linux AMI 2015.09 (HVM)平台搭建lamp
  • 原文地址:https://www.cnblogs.com/YXSZ/p/12291159.html
Copyright © 2020-2023  润新知