Python爬取某贴吧第一页的所有帖子的标题、连接、作者,将数据储存到txt文件中

学习网络爬虫的第二个程序:

#-*- coding:utf-8 -*-#import re
import urllib
from bs4 import BeautifulSoup
import urlparse   #处理url链接的库
import chardet #字符集检测import sys     #解决UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-15: ordinal not in range(128)
reload(sys)
sys.setdefaultencoding( "utf-8" )"""
爬取某贴吧第一页的所有帖子的标题、连接、作者,将数据储存到txt文件中
"""def get_content(url):""" 获取页面源码"""html = urllib.urlopen(url) #获取网站页面的地址content = html.read()      #将页面读取到content变量中	html.close()	            #关闭页面#local = '/root/desktop/python/teiba.html'#urllib.urlretrieve(url,local) #将页面源码下载的本地#print chardet.detect(content)  #检测网页的字符集,依据网页具体内容return contentdef get_author(info):"""提取帖子里面的作者  """	soup = BeautifulSoup(info) #转换成soup对象all_author = soup.find_all('div',class_="louzhubiaoshi  j_louzhubiaoshi") #提取有关与作者的那行代码for author in all_author:	return author['author'] #提取作者的名字def get_tiezi(info):"""提取帖子的标题和链接     """	soup = BeautifulSoup(info) #转换成soup对象all_title = soup.find_all('a',class_="j_th_tit") #all_author = soup.find_all('span',class_="tb_icon_author ")	#class_="..."中的class带下划线是因为class是python的一个关键字,他还是表示class="..."print len(all_title) #打印获取的链接个数#print len(all_author)f = file("data.txt","w+") #创建并打开文件,文件路径和这个Python执行文件的路径一样for title in all_title:		#print title['title']url_tiezi = urlparse.urljoin("http://tieba.baidu.com",title['href']) #合并为全路径#print type(url_tiezi)info1 = get_content(url_tiezi) #进入帖子里面author = get_author(info1)  #找到作者if author == None: #处理识别不了的作者author = "I don't know the author!"print authorli = [str(title['title']+"\n"),url_tiezi+"\n",str(author+"\n\n")] #转换为字符串f.writelines(li) #储存到文件中f.close() #关闭文件return 0info = get_content('http://tieba.baidu.com/f?kw=%B3%A4%BD%AD%B4%F3%D1%A7&fr=home') #贴吧地址
print get_tiezi(info)


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部