本帖最后由 豫瞳 于 2014-6-5 17:44 编辑
- [code]# _*_ coding:utf-8 _*_
- import re,urllib2,sys
- from bs4 import BeautifulSoup
- reload(sys)
- sys.setdefaultencoding('utf-8')
- print u'很慢的一个小东西,因为网站没有搜索功能,采集百度自定义搜索结果页,。制作集合页。。'
- print '要是遇到 搜索结果为空的,直接断掉,没有增加错误判断'
- print u'最终效果是 : 标题+文章描述 ,输出为 TXT格式,要想少量的 直接做成HTML 页,自个在改下吧\
- ,大量的估计这个玩意直接 碉堡了 就 '
- f=open(r'c:\\1\\word.txt').readlines()#关键词列表
- def mkdir(path):#创建文件夹
- import os
- path=path.strip()
- path=path.rstrip("//")
- isExists=os.path.exists(path)
- # 判断是否存在
- if not isExists:
- print path+'创建成功OK'
- print u'开始干活,来碗烩面慢慢等'
- os.makedirs(path)
- return True
- else:
- print path+"'文件夹已存在'"
- print u'开始干活,来碗面条慢慢等'
- return False
- mkpath="C:\\2"# 要创建的文件夹 OR 使用的文件夹
- mkdir(mkpath)
- def get3(y):#获取最后结果
- csw=open('c:\\1\\ymurl.txt','r').readlines()#读取位于 1文件夹下 YMUEL内容
- aq=open('c:\\1\\description.txt','r').readlines()#读取位于 1文件夹下内容
- neir=open("c:\\2\\%s.txt"%y,'w')#更改名称
- link=[]
- link2=[]
- for i in aq:link.append(i+"</span></li>")#
- for word in csw:link2.append(word)
- for iu in (zip(link2,link)):
- worddoc=str(iu).decode('unicode_escape').encode('raw_unicode_escape')
- worddocc= worddoc.replace('\',','').replace('\'','').replace('(','').replace(')','')
- print >> neir,worddocc
- neir.close()
- return
- def get2(c):#采集网站标题内容,与返回GETurl
- url=urllib2.urlopen(c).geturl()#获取百度搜索结果页URL 301 网站真实URL
- print url
- wsoup=BeautifulSoup(urllib2.urlopen(url).read())
- title=str(wsoup.title).replace('<title>','').replace('</title>','').replace('','')#最后一个为替换标题后缀为空自己添加
- docm= "<li><a href=\""+url+"\"/>"+title+"</a><span id=\"decon\">"#输出形式
- coon=open('c:\\1\\ymurl.txt','a')#写入1号文件下
- coon.write(docm+'\n')
- coon.close()
- return
- def words(s,httpurl):#获取百度结果页百度加密URL与结果页描述
- word= urllib2.quote(s.encode('utf8')).replace('%0A','')
- baiduurl="http://www.baidu.com/s?ct=2097152&tn=bds&ie=utf-8&si=%s&wd=%s&rn=30&cl=3"%(httpurl,word)
- soup=BeautifulSoup(urllib2.urlopen(baiduurl).read())
- cone= soup.find('div',{'id':'content_left'})
- listurl=re.findall('http://www.baidu.com/link.*?"',str(cone))
- doc=cone.findAll('div',{'class':'c-abstract'})
- for i in listurl:
- while listurl.count(i)>1:#在原位去重
- del listurl[listurl.index(i)]#在原位去重
- get2(i.replace('"',''))#传递数值
- for e in doc:#获得描述并写入文件 不知道怎么直接和上面的FOR 一起传递,用的笨方法
- description=str(e).replace('<div class="c-abstract">','').replace('<em>','').replace('</em>','').replace('</div>','')
- with open('c:\\1\\description.txt','a') as fr:fr.write(description+'\n')
- return
- httpurl="www.xxxxxxxx.xxx"#更改
- # httpurl=raw_input()
- for x,k in enumerate(f):
- with open('c:\\1\\description.txt','w') as fr:fr.write("")
- with open('c:\\1\\ymurl.txt','w') as cs:cs.write("")
- s=k.decode('gbk').encode('utf-8')
- words(s,httpurl)
- get3(x+1)
复制代码 |