'); (window.slotbydup = window.slotbydup || []).push({ id: "u4635961", container: s }); })(); 多条广告如下脚本只需引入一次 -- ----------------- baidu ad end --------------------->
当前位置:  编程技术>python

python实现博客文章爬虫示例

    来源: 互联网  发布时间:2014-10-04

    本文导语:  代码如下:#!/usr/bin/python#-*-coding:utf-8-*-# JCrawler# Author: Jam import timeimport urllib2from bs4 import BeautifulSoup # 目标站点TargetHost = "http://adirectory.blog.com"# User AgentUserAgent  = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.17...

代码如下:

#!/usr/bin/python
#-*-coding:utf-8-*-
# JCrawler
# Author: Jam

import time
import urllib2
from bs4 import BeautifulSoup

# 目标站点
TargetHost = "http://adirectory.blog.com"
# User Agent
UserAgent  = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.117 Safari/537.36'
# 链接采集规则
# 目录链接采集规则
CategoryFind    = [{'findMode':'find','findTag':'div','rule':{'id':'cat-nav'}},
                   {'findMode':'findAll','findTag':'a','rule':{}}]
# 文章链接采集规则
ArticleListFind = [{'findMode':'find','findTag':'div','rule':{'id':'content'}},
                   {'findMode':'findAll','findTag':'h2','rule':{'class':'title'}},
                   {'findMode':'findAll','findTag':'a','rule':{}}]
# 分页URL规则
PageUrl  = 'page/#page/'
PageStart = 1
PageStep  = 1
PageStopHtml = '404: Page Not Found'

def GetHtmlText(url):
    request  = urllib2.Request(url)
    request.add_header('Accept', "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp")
    request.add_header('Accept-Encoding', "*")
    request.add_header('User-Agent', UserAgent)
    return urllib2.urlopen(request).read()

def ArrToStr(varArr):
    returnStr = ""
    for s in varArr:
        returnStr += str(s)
    return returnStr


def GetHtmlFind(htmltext, findRule):
    findReturn = BeautifulSoup(htmltext)
    returnText = ""
    for f in findRule:
        if returnText != "":
            findReturn = BeautifulSoup(returnText)
        if f['findMode'] == 'find':
            findReturn = findReturn.find(f['findTag'], f['rule'])
        if f['findMode'] == 'findAll':
            findReturn = findReturn.findAll(f['findTag'], f['rule'])
        returnText = ArrToStr(findReturn)
    return findReturn

def GetCategory():
    categorys = [];
    htmltext = GetHtmlText(TargetHost)
    findReturn = GetHtmlFind(htmltext, CategoryFind)

    for tag in findReturn:
        print "[G]->Category:" + tag.string + "|Url:" + tag['href']
        categorys.append({'name': tag.string, 'url': tag['href']})
    return categorys;

def GetArticleList(categoryUrl):
    articles = []
    page = PageStart
    #pageUrl = PageUrl
    while True:
        htmltext = ""
        pageUrl  = PageUrl.replace("#page", str(page))
        print "[G]->PageUrl:" + categoryUrl + pageUrl
        while True:
            try:
                htmltext = GetHtmlText(categoryUrl + pageUrl)
                break
            except urllib2.HTTPError,e:
                print "[E]->HTTP Error:" + str(e.code)
                if e.code == 404:
                    htmltext = PageStopHtml
                    break
                if e.code == 504:
                    print "[E]->HTTP Error 504: Gateway Time-out, Wait"
                    time.sleep(5)
                else:
                    break

        if htmltext.find(PageStopHtml) >= 0:
            print "End Page."
            break
        else:

            findReturn = GetHtmlFind(htmltext, ArticleListFind)

            for tag in findReturn:
                if tag.string != None and tag['href'].find(TargetHost) >= 0:
                    print "[G]->Article:" + tag.string + "|Url:" + tag['href']
                    articles.append({'name': tag.string, 'url': tag['href']})

            page += 1

    return articles;

print "[G]->GetCategory"
Mycategorys = GetCategory();
print "[G]->GetCategory->Success."
time.sleep(3)
for category in Mycategorys:
   print "[G]->GetArticleList:" + category['name']
   GetArticleList(category['url'])


    
 
 

您可能感兴趣的文章:

  • 基于python实现的网络爬虫功能:自动抓取网页介绍
  • 一则python3的简单爬虫代码
  • python网络爬虫采集联想词示例
  • python爬虫教程之爬取百度贴吧并下载的示例
  • 基于python实现的网络爬虫功能:自动抓取网页介绍 iis7站长之家
  • python爬虫常用的模块分析
  • python抓取网页图片示例(python爬虫)
  • python使用rabbitmq实现网络爬虫示例
  • Python爬虫框架Scrapy安装使用步骤
  • python实现的一只从百度开始不断搜索的小爬虫
  • python实现爬虫下载漫画示例
  • python编写网页爬虫脚本并实现APScheduler调度
  • python模拟新浪微博登陆功能(新浪微博爬虫)
  • Python开发实例分享bt种子爬虫程序和种子解析
  • Python获取网页编码的方法及示例代码
  • python读取csv文件示例(python操作csv)
  • python下xml解析库lxml最新版下载安装以及代码示例
  • python基础教程之python消息摘要算法使用示例
  • 数据结构:图(有向图,无向图),在Python中的表示和实现代码示例
  • python实现绘制树枝简单示例
  • 使用python删除nginx缓存文件示例(python文件操作)
  • python学习手册中的python多态示例代码
  • python调用windows api锁定计算机示例
  • python代码制作configure文件示例
  • python使用循环实现批量创建文件夹示例
  • python采用requests库模拟登录和抓取数据的简单示例
  • Python数组条件过滤filter函数使用示例
  • python获得图片base64编码示例
  • Python的print用法示例
  • python文件读写并使用mysql批量插入示例分享(python操作mysql)
  • Python pass 语句使用示例
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Python GUI编程:tkinter实现一个窗口并居中代码
  • Python3实现生成随机密码的方法
  • Python3通过request.urlopen实现Web网页图片下载
  • python调用短信猫控件实现发短信功能实例
  • 在Python3中使用urllib实现http的get和post提交数据操作
  • Python实现多行注释的另类方法
  • juqery的python实现:pyquery学习使用教程
  • python 布尔操作实现代码
  • python实现的重启关机程序实例
  • Python中无限元素列表的实现方法
  • python 实现插入排序算法
  • python 实现文件的递归拷贝实现代码
  • python判断端口是否打开的实现代码
  • python实现哈希表
  • python冒泡排序算法的实现代码
  • Python实现冒泡,插入,选择排序简单实例
  • python实现排序算法
  • python实现图片批量剪切示例
  • python实现进程间通信简单实例
  • 使用python实现strcmp函数功能示例
  • python实现dnspod自动更新dns解析的方法
  • Python不使用print而直接输出二进制字符串
  • 让python同时兼容python2和python3的8个技巧分享
  • Python中实现json字符串和dict类型的互转
  • 使用setup.py安装python包和卸载python包的方法
  • python异常信息堆栈输出到日志文件
  • 不小心把linux自带的python卸载了,导致安装一个依赖原python的软件不能安装,请问该怎么办?
  • python下用os.execl执行centos下的系统时间同步命令ntpdate
  • Python开发者社区整站源码 Pythoner
  • Python namedtuple对象json序列化/反序列化及对象恢复
  • 新手该如何学python怎么学好python?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3