Пример #1
0
 def __init__(self, config):
     self.config = config
     # parser
     self.parser = self.config.get_parser()
     self.remove_nodes_re = (
     "^side$|combx|retweet|mediaarticlerelated|menucontainer|navbar"
     "|comment|PopularQuestions|contact|foot|footer|Footer|footnote"
     "|cnn_strycaptiontxt|cnn_html_slideshow|cnn_strylftcntnt|links|meta$|scroll|shoutbox|sponsor"
     "|tags|socialnetworking|socialNetworking|cnnStryHghLght"
     "|cnn_stryspcvbx|^inset$|pagetools|post-attributes"
     "|welcome_form|contentTools2|the_answers"
     "|communitypromo|runaroundLeft|subscribe|vcard|articleheadings"
     "|date|^print$|popup|author-dropdown|tools|socialtools|byline"
     "|konafilter|KonaFilter|breadcrumbs|^fn$|wp-caption-text"
     "|legende|ajoutVideo|timestamp|js_replies"
     )
     self.regexp_namespace = "http://exslt.org/regular-expressions"
     self.nauthy_ids_re = "//*[re:test(@id, '%s', 'i')]" % self.remove_nodes_re
     self.nauthy_classes_re = "//*[re:test(@class, '%s', 'i')]" % self.remove_nodes_re
     self.nauthy_names_re = "//*[re:test(@name, '%s', 'i')]" % self.remove_nodes_re
     self.div_to_p_re = r"<(a|blockquote|dl|div|img|ol|p|pre|table|ul)"
     self.caption_re = "^caption$"
     self.google_re = " google "
     self.entries_re = "^[^entry-]more.*$"
     self.facebook_re = "[^-]facebook"
     self.facebook_braodcasting_re = "facebook-broadcasting"
     self.twitter_re = "[^-]twitter"
     self.tablines_replacements = ReplaceSequence()\
                                         .create("\n", "\n\n")\
                                         .append("\t")\
                                         .append("^\\s+$")
Пример #2
0
    def __init__(self):

        self.regExRemoveNodes = (
            "^side$|combx|retweet|mediaarticlerelated|menucontainer|navbar"
            "|comment|PopularQuestions|contact|foot|footer|Footer|footnote"
            "|cnn_strycaptiontxt|links|meta$|scroll|shoutbox|sponsor"
            "|tags|socialnetworking|socialNetworking|cnnStryHghLght"
            "|cnn_stryspcvbx|^inset$|pagetools|post-attributes"
            "|welcome_form|contentTools2|the_answers"
            "|communitypromo|runaroundLeft|subscribe|vcard|articleheadings"
            "|date|^print$|popup|author-dropdown|tools|socialtools|byline"
            "|konafilter|KonaFilter|breadcrumbs|^fn$|wp-caption-text"
            "|source|legende|ajoutVideo|timestamp")

        self.regexpNS = "http://exslt.org/regular-expressions"
        self.queryNaughtyIDs = "//*[re:test(@id, '%s', 'i')]" % self.regExRemoveNodes
        self.queryNaughtyClasses = "//*[re:test(@class, '%s', 'i')]" % self.regExRemoveNodes
        self.queryNaughtyNames = "//*[re:test(@name, '%s', 'i')]" % self.regExRemoveNodes

        self.divToPElementsPattern = r"<(a|blockquote|dl|div|img|ol|p|pre|table|ul)"
        self.captionPattern = "^caption$"
        self.googlePattern = " google "
        self.entriesPattern = "^[^entry-]more.*$"
        self.facebookPattern = "[^-]facebook"
        self.twitterPattern = "[^-]twitter"

        self.tabsAndNewLinesReplcesments = ReplaceSequence()\
                                            .create("\n", "\n\n")\
                                            .append("\t")\
                                            .append("^\\s+$")
Пример #3
0
See the License for the specific language governing permissions and
limitations under the License.
"""
import re
from copy import deepcopy
from urlparse import urlparse, urljoin
from goose.utils import StringSplitter
from goose.utils import StringReplacement
from goose.utils import ReplaceSequence
from goose.text import StopWords
from goose.parsers import Parser

MOTLEY_REPLACEMENT = StringReplacement("&#65533;", "")
ESCAPED_FRAGMENT_REPLACEMENT = StringReplacement(u"#!",
                                                 u"?_escaped_fragment_=")
TITLE_REPLACEMENTS = ReplaceSequence().create(u"&raquo;").append(u"»")
PIPE_SPLITTER = StringSplitter("\\|")
DASH_SPLITTER = StringSplitter(" - ")
ARROWS_SPLITTER = StringSplitter("»")
COLON_SPLITTER = StringSplitter(":")
SPACE_SPLITTER = StringSplitter(' ')
NO_STRINGS = set()
# TODO
# A_REL_TAG_SELECTOR = "a[rel=tag], a[href*=/tag/]"
A_REL_TAG_SELECTOR = "a[rel=tag]"
RE_LANG = r'^[A-Za-z]{2}$'


class ContentExtractor(object):
    def __init__(self, config):
        self.config = config