记录一次很懒的经历。。。。

咋跟写日记一样呢?先啰嗦两句

我一直觉得“懒惰”对于进步有很正面的影响。当然了,这里的“懒惰”是指能用脑子解决的坚决不动手!因为动手累啊。。。对于学计算机的人来说应该再加上一条:能用计算机解决的就别用脑子,因为人脑会疲劳会出错。(逼先装到这)


起因

其实这个事是这样的,我们大数据组有几个同学负责在网上抓数据,我也不知道抓了多久,那个spider就写了好几千个(目测两千)我擦这任务量,随说框架搭好了写spider就跟写填空题一样(不过碰到js渲染或者post、json啥的还是得认真一下的。。),但是这工作量也是很让人吃惊的。

然后领导就想看一看有多少地区的spider被搞定了,要具体的省市地名还有url链接,这体力活自然就被分给我这个实习生了。当时心里那个苦啊,这跟搬砖没区别啊,难道我要在上千个 .py(我们用的Python)文件中去找?按照name后面的拼音再去百度地名?在把start_urls里的链接粘出来?我擦,那我不得做上好几天啊,而且最后很可能还会出错。所以就想办法啊

搬砖过程

我们这个框架用的是scrapy,了解scrapy自然就知道我上面说的name  和  start_urls了。我是这么搞得,我把所用的.py文件按照省份放在了不同的文件夹里(就这种)


然后写了一个批处理文件用来把所用.py 文件重命名成.txt文件   就是个cmd命令: ren *.* *.txt  ,改成.bat双击执行

然后就写个脚本从里面所有文件夹里依次读,把里面的name   和  start_urls里的链接拽出来最后写在一个文件里(到这里执行时间只有15分钟左右),渣代码我会扔到最后,看官老爷们先别笑。最后搞出来是这样的

里面有网站链接就不放图了。。。

类似这种:  省:guangdong 地方:guangzhou-baiyun  链接:“http://www.abcderhdehfiwfhwfhjeoifhjewifh.com”

每行都是,精确到县、区的等级,看了一眼1000多行(因为只是spider里的一个分支部分)

新的问题啊!!,name里的是拼音,劳资要的是汉字地名啊,卧槽这咋搞,难道还是要搬砖???

这时我想起来了,每个省市地方网上有名单啊,很全啊,然后搞了一个,用Python上的pinyin这个包,把这些地名都转成了拼音(和汉字可以对照)

然后每行 省:guangdong 地方:guangzhou-baiyun  链接:“http://www.abcderhdehfiwfhwfhjeoifhjewifh.com”分隔开

丢进去对照着找汉字,到这里我已经搞了四十多分钟了

丢进去转换之后又有新问题了,其实早就料到了,拼音转换本来就有缺点,比如苏州和宿州他俩是很容易搞混


不过先批量把乱七八糟的符号去掉吧(这个时候用Excel都比写脚本快),不过还是写了一个把文件按照单元格写进Excel文件的脚本,最后发现还是得手动改改,不过工作量小了太多了,最后我只手动改了80个左右,还是只规范地名,就这我都搞了快两个小时,心累啊


# coding=utf-8
import os
import chardet
import xlwt
from pypinyin import pinyin, lazy_pinyin
import sys
reload(sys)
sys.setdefaultencoding('utf8')
sheng_name = ['anhui', 'beijing', 'chongqing', 'fujian', 'guangdong', 'guangxi', 'jiangsu', 'neimenggu', 'shaanxi',
              'shanxi', 'shanghai', 'sichuan', 'zhejiang', 'tianjin']


f = open('C:/Users/Administrator.USER-20170418GW/Desktop/03.txt','r')
chinese_pinyin_list = []

for line in f:
    a = 0
    for ch in line:

        if ch == 'h' or ch == 'w':
            line = line.split(ch)[0]
            continue
    for ch in line:
        if ch == '\t' and  a == 0:
            line = line.replace('\t','').replace('\n','')
        else:
            a = 1
    new_line = line.decode('utf-8')
    chinese_pinyin_list.append(line+':'+''.join(lazy_pinyin(new_line)))
dic = {}
f=open('result.txt','w')
for sheng in sheng_name:
    filepath = 'C:/Users/Administrator.USER-20170418GW/Desktop/count/' + sheng + '/'
    pathDir = os.listdir(filepath)
    for allDir in pathDir:
        if 'git' in allDir:
            pass
        else:
            filename = os.path.join('%s%s' % (filepath, allDir))
            fopen = open(filename, 'r')
            url_list = []
            place = []
            type_url_a = 0
            for eachLine in fopen:

                if 'pep_' in eachLine:
                    place = eachLine.split('_')

                if 'www' in eachLine or 'http:' in eachLine or ']' in eachLine or 'https:' in eachLine:
                    if type_url_a == 0:
                        url_list.append(eachLine)
                    if ']' in eachLine:
                        a = 1
            for c_p in chinese_pinyin_list:
                if sheng == 'shanxi':
                    sheng = u'山西'
                if sheng in c_p:
                    sheng = c_p.split(':')[0]
                    continue
                if sheng == 'shaanxi':
                    sheng = u'陕西'

            new_place = []
            for c_p in chinese_pinyin_list:
                for p in place[1:-1]:
                    if p in c_p:
                        p = c_p.split(':')[0]
                        new_place.append(p)


            placename = u":" + sheng.split('\t')[0] + u" 地方:" + '-'.join(new_place[:len(place[1:-1])])
            url = u' 链接:'+''.join(url_list).replace(' ','').replace('\n','').split(']')[0].split('[')[-1]
            print placename,url
            f.write(placename)
            f.write(url)
            f.write('\n')
            fopen.close()

f = open('C:/Users/Administrator.USER-20170418GW/Desktop/result.txt','r')
wbk = xlwt.Workbook()
sheet = wbk.add_sheet('pep_over_url')
a=0
for line in f:
    print line
    sheng = line.split(u'地方')[0].replace(u':','')
    sheet.write(a, 0, sheng)
    place = line.split(u'地方')[-1].split(u'链接')[0]
    sheet.write(a, 1, place)
    url = line.split(u'链接')[-1]
    sheet.write(a, 2, url)
    a+=1

wbk.save('test.xls')





猜你喜欢

转载自blog.csdn.net/qq_38322240/article/details/80678789