首页 > 其他分享 >批量爬取TXT文本

批量爬取TXT文本

时间:2023-04-17 19:55:05浏览次数:45  
标签:COMMENT None 文本 爬取 re file print TXT data

import re
import os			#导入模块
import threading

import pymysql
# 连接数据框,创建表
db = pymysql.connect(host='localhost',
                     user='root',
                     password='1234',
                     database='旅游',
                     charset='GB18030')
conn = db.cursor()

'''
conn.execute('drop table tb_ly')
db.commit()
'''
conn.execute('create table tb_ly(xh int NOT NULL AUTO_INCREMENT COMMENT \'序号\','
             'hth VARCHAR(20)  NULL  COMMENT \'合同号\','
             'wjm VARCHAR(30) not null COMMENT \'文件名\','
             'xb VARCHAR(2) not null COMMENT \'性别\','
             'lxsmc VARCHAR(60) null COMMENT \'旅行社名称\','
             'xlmc VARCHAR(600)  null COMMENT \'线路名称\','
             'cfsj VARCHAR(15)  null COMMENT \'出发时间\','
             'fhsj VARCHAR(15)  null COMMENT \'返回时间\','
             'zts VARCHAR(4)  null COMMENT \'旅程总时间(天)\','
             'xcnr LONGTEXT  null COMMENT \'行程内容\','
             'primary key(xh))' )    
db.commit()

#conn.execute('drop table tb_ly')
path = ".\合同详情表新截止到2021-11-26日\合同详情表新" #文件夹目录
files= os.listdir(path) #得到文件夹下的所有文件名称
#print(files[1])

xb=r"	([男女])	"    #性别
hth=r"合同号:([0-9A-z]*)"  #合同号
lxsmc=r"旅行社名称:(.*?[公司,社])" #旅行社名称
xlmc=r"线路名称:(.*?)[	]" #线路名称
cfsj=r"出发时间:(\d{4}-\d{2}-\d{2})" #出发时间
fhsj=r"返回时间:(\d{4}-\d{2}-\d{2})"  #返回时间
zts=r"共:(\d*)天"  #l旅程总时间
xcnr=r"行程内容\n([\d\D]*)" #行程内容 ,“.”无法表示“\n”,故用“\d\D”解决
thread_lock = threading.BoundedSemaphore(value=128)
def run():
    
    for file in files: #遍历文件夹
        position = path+'\\'+ file #构造绝对路径, "\V”, 其中一个“为转义符
        with open(position, "r",encoding='GB18030',errors='ignore') as f: #打开文件
            data = f.read() #读取文件                
        hth2=re.match(hth,data) #合同号
        lxsmc2=re.search(lxsmc,data) #旅行社名称
        xlmc2=re.search(xlmc,data) #线路名称
        cfsj2=re.search(cfsj,data) #出发时间
        fhsj2=re.search(fhsj,data) #返回时间
        zts2=re.search(zts,data)  #旅程总时间
        xcnr2=re.search(xcnr,data)  #行程内容 
        if hth2 is not None:
            hth1=hth2.group(1)
        else:
            hth1=''
            print(file+'  '+'合同号空')
    
        if lxsmc2 is not None:
            lxsmc1=lxsmc2.group(1)
        else:
            lxsmc1=''
            print(file+'  '+'旅行社名称空')
            
        if xlmc2 is not None:
            xlmc1=xlmc2.group(1)
        else:
            xlmc1=''
            print(file+'  '+'线路名称空')
            
        if cfsj2 is not None:
            cfsj1=cfsj2.group(1)
        else:
            cfsj1=''
            #print(file+'  '+'出发时间空')
            
        if fhsj2 is not None:
            fhsj1=fhsj2.group(1)
        else:
            fhsj1=''
            #print(file+'  '+'返回时间空')
            
        if zts2 is not None:
            zts1=zts2.group(1)
        else:
            zts1=''
            #print(file+'  '+'总天数空')
            
        if xcnr2 is not None:
            xcnr1=xcnr2.group(1)            
        else:
            xcnr1=''
            print(file+'  '+'行程内容空')
        xb5=re.findall(xb,data)
        if xb5 is not None:                       
            for xb1 in xb5:      #性别                                            
                conn.execute('insert into tb_ly(hth,wjm,xb,lxsmc,xlmc,cfsj,fhsj,zts,xcnr)'
                             'values(%s,%s,%s,%s,%s,%s,%s,%s,%s)',
                             [hth1,file,xb1,lxsmc1,xlmc1,cfsj1,fhsj1,zts1,xcnr1])    
                db.commit()
        else:
            print(file+"缺少性别")
            break
            
        f.close()
        '''            
        if i>3000:
            print('结束')                        
            break
         '''       
    conn.close()
    db.close()    
    
t = threading.Thread(target=run, args=())#多线程运行加快运行速度
t.start()

  

标签:COMMENT,None,文本,爬取,re,file,print,TXT,data
From: https://www.cnblogs.com/hua-xiong/p/17327270.html

相关文章

  • 文本编辑器 实现ctrl+v粘贴图片并上传、word粘贴带图片
    ​ 当前功能基于PHP,其它语言流程大抵相同。大概流程:1.将docx文件上传到服务器中2.使用PHPoffice/PHPword实现将word转换为HTML3.将HTML代码返回并赋值到编辑器中 1编辑器配置修改1.1新增上传wordjson配置在ueditor\php\config.json中新增如下配置:     /*......
  • Linux-文本编辑vim
    vim使用流程vim默认机器是不安装的,需要手动安装这个工具命令yuminstallvim-y #通过yum软件管理工具进行安装当vim打开不存在的文件的时候,默认会创建文件语法1.vim文件名2.输入字母i,进入编辑模式,代表insert输入字母o,在光标下一行开始编辑3.写完代码......
  • 爬取的数据存mysql中、加代理,cookie,header,加入selenium、布隆过滤器、scrapy-redis实
    上节回顾#1scrapy架构 -爬虫:写的一个个类-引擎: -调度器:排队,去重-下载器-pipline-下载中间件-爬虫中间件#2命令 -scrapystartproject项目名-scrapygensipder爬虫名网址-scrapycrawl爬虫名字-run.py#......
  • 初探富文本之OT协同算法
    初探富文本之OT协同算法OT的英文全称是OperationalTransformation,是一种处理协同编辑的算法。当前OT算法用的比较多的地方就是富文本编辑器领域了,常用于作为实现文档协同的底层算法,支持多个用户同时编辑文档,不会因为用户并发修改导致冲突,而导致结果不一致甚至数据丢失的问题。描述......
  • 直播网站程序源码,给组件按钮、文本编辑框等设置圆形边框、颜色
    直播网站程序源码,给组件按钮、文本编辑框等设置圆形边框、颜色代码如下:1.添加drawable资源文件 <?xmlversion="1.0"encoding="utf-8"?><shape  xmlns:android="http://schemas.android.com/apk/res/android"  android:shape="rectangle">  <!--......
  • MFC-DrawText在指定的矩形里写入格式化的文本
     HDChdc=::GetDC(m_hWnd);LOGFONTlf={0};lf.lfWeight=16;//平均宽度lf.lfHeight=40;//字体高度lf.lfCharSet=GB2312_CHARSET;HFONThfont=::CreateFontIndirect(&lf);HFONTholdfont=(HFONT)SelectObject(hdc,hfon......
  • 使用文本编辑器和jdk开发简单JavaSE工程
    一个在eclipse下简单的示例 运行时可以在代码编辑器页面右键run测试发布时可以file->export->runnablejarfile 如果没有eclipse只有jdk和文本编辑器呢? 创建和eclipse工程相似的目录 目录JAVASE01binlibsrc\com\zt\javase01\IODemo.java 下面的命令是在编译class......
  • VBA一例:如何保持文本框焦点
    缘起在Excel的VBA编程中,设计一个用于录入的用户窗体,该窗体包含1个文本框和2个按钮,文本框用于扫描枪的录入。要求扫描枪可以连续录入,即每扫描完一个条码,文本框自动清空,文本框继续获得焦点。 我们知道扫描枪录入实际上等同于往文本框录入一段字符串并回车,那么刚才的要求理......
  • GUI-UPLOAD-上传txt
    *&---------------------------------------------------------------------**&ReportZ003*&*&---------------------------------------------------------------------**&*&*&------------------------------------------------------......
  • 如何去掉Linux vim文本中的^M
    正常情况如果vim只是发现行尾有^M,那么直接使用dos2unix就可以了dos2unixyourfile.txt但是有些文本只有^M没有换行。这是因为一般换行都是"0x0d0x0a",0x0d是回车键,0x0a是换行。只有^M没有换行,是因为只有0x0d没有0x0a,这时可以用sed替换sed-i"s/\x0D/\x0A/g"yourfile.txt......