这段代码用于获取指定贴吧下指定页数的所有标题。

原代码不知道是使用哪位仁兄的,已经不记得了,稍微修改了下,请求超时时长为7s,并且把抓取到的文本保存到txt文档中。

工作环境:python 2.7 

操作系统:mac os

完整代码如下:

#!/usr/bin/env python
#coding:utf-8

import urllib2
import re
import sys

reload(sys)
sys.setdefaultencoding('utf8')
global titles

#加载页面内容
def load_page(url):
    '''
    发送url请求
    返回url请求的静态html页面
    :param url:
    :return:
    '''
    try:
        user_agent = "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50"
        headers = {"User-Agent" : user_agent}
        request = urllib2.Request(url,headers = headers)
        response = urllib2.urlopen(request,timeout=7)
        html = response.read()
        #print html
        #print "--------------------------"
        getTitle(html)
    except Exception,e:
        print str(e)

#生成url地址,加载页面内容
def tieba_spider(url,startPage,endPage):
    for i in range(startPage,endPage + 1):
        page = (i - 1) * 50
        my_url = url + str(page)
        load_page(my_url)
        print "--------第%d页----------" % i

#获得贴吧的标题
def getTitle(html):
    global titles
    info = re.findall(r'class="j_th_tit ">(.*?)</a>',html,re.S)
    for titleList in info:
        print titleList
        print "---------------"
    titles.write(" ".join(info))

if __name__ == '__main__':
    url = "http://tieba.baidu.com/f?kw=%E8%BD%AC%E5%9F%BA%E5%9B%A0&ie=utf-8&pn="
    startPage = 1
    endPage = 731
    global titles 
    titles = open('tiebaTitles.txt','w')
    tieba_spider(url, startPage, endPage)
    titles.close()
    print "---------------------结束------------------"


程序截图:



Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐