From ac18641d28b975f3d5dec70d0ef5acf00c34ac8b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bal=C3=A1zs=20Indig?= Date: Mon, 8 Mar 2021 11:17:55 +0100 Subject: [PATCH] Fix support for a one single page column with multiple multipage columns --- README.md | 2 +- .../site_specific_extractor_functions.py | 20 ++ configs/site_schemas/valasz_schema.yaml | 178 +++++++++--------- tests/next_page_of_article.warc.gz | Bin 110542 -> 160731 bytes webarticlecurator/utils.py | 22 ++- webarticlecurator/version.py | 2 +- 6 files changed, 130 insertions(+), 94 deletions(-) diff --git a/README.md b/README.md index 29e3c57..7fad75b 100644 --- a/README.md +++ b/README.md @@ -81,7 +81,7 @@ In the `columns` dictionary, the following features can be set for each column ( - `date_first_article` (optional): The date of the first article on the portal/column (also used for archive crawling) - `date_first_article` (optional): The date of the last article on the portal/column (also used for archive crawling) - `initial_pagenum` (optional): The initial page number which could be omitted (an empty string if not set, else it should be `min_pagenum` - 1) -- `min_pagenum` (optional): The "first" page number to increment +- `min_pagenum` (optional): The "first" page number to increment (e.g. initial_pagenum + 1 = min_pagenum <= max_pagenum if not a single page column where only initial_pagenum must be specified, min_pagenum and max_pagenum must be omited) - `max_pagenum` (optional): The upper bound of the number of pages for safety or for stop criteria - `archive_url_format`: The schema for the archive URL of the portal/column (supply `#year`, `#month`, `#day` and `#next-year`, `#next-month`, `#next-day` tags which have to be replaced with the actual field of date, and diff --git a/configs/extractors/site_specific_extractor_functions.py b/configs/extractors/site_specific_extractor_functions.py index d8cd494..9eb7f6b 100755 --- a/configs/extractors/site_specific_extractor_functions.py +++ b/configs/extractors/site_specific_extractor_functions.py @@ -1213,6 +1213,17 @@ def next_page_of_article_444(curr_html): return None +def next_page_of_article_valasz(curr_html): + bs = BeautifulSoup(curr_html, 'lxml') + if bs.find('article', class_='percro-percre-lista') is not None: + next_tag = bs.find('a', rel='next') + if next_tag is not None and 'href' in next_tag.attrs.keys(): + next_link = next_tag.attrs['href'] + link = f'http://valasz.hu{next_link}' + return link + return None + + def next_page_of_article_test(filename, test_logger): """Quick test for extracting URLs form an archive page""" # This function is intended to be used from this file only as the import of WarcCachingDownloader is local to main() @@ -1236,6 +1247,15 @@ def next_page_of_article_test(filename, test_logger): text = w.download_url('https://444.hu/2014/03/23/real-madrid-barcelona-elo?page=7') assert next_page_of_article_444(text) is None + text = w.download_url('http://valasz.hu/itthon/percrol-percre-az-onkormanyzati-valasztasokrol-105350?page=3') + assert next_page_of_article_valasz(text) == 'http://valasz.hu/itthon/percrol-percre-az-onkormanyzati' \ + '-valasztasokrol-105350?page=4' + text = w.download_url('http://valasz.hu/vilag/kelet-ukrajna-percrol-percre-103699?page=3') + assert next_page_of_article_valasz(text) is None + text = w.download_url('http://valasz.hu/itthon/humboldt-dijas-kvantumfizikus-alapkutatas-nelkul' + '-nincs-fejlodes-129197') + assert next_page_of_article_valasz(text) is None + test_logger.log('INFO', 'Test OK!') diff --git a/configs/site_schemas/valasz_schema.yaml b/configs/site_schemas/valasz_schema.yaml index d6ac0c1..2cf2bef 100644 --- a/configs/site_schemas/valasz_schema.yaml +++ b/configs/site_schemas/valasz_schema.yaml @@ -11,12 +11,13 @@ "min_pagenum": 2 "max_pagenum": 243 -# "budapest/pest-budai-latkep": -# "archive_url_format": "http://valasz.hu/pest_budai_latkep?page=#pagenum" -# -# "initial_pagenum": 1 -# "min_pagenum": 2 -# "max_pagenum": 162 + # Duplicate: part of "budapest" + "budapest/pest-budai-latkep": + "archive_url_format": "http://valasz.hu/pest_budai_latkep?page=#pagenum" + + "initial_pagenum": 1 + "min_pagenum": 2 + "max_pagenum": 162 "gadasag": "archive_url_format": "http://valasz.hu/uzlet?page=#pagenum" @@ -49,9 +50,8 @@ "gazdasag/magyarok-a-piacon": "archive_url_format": "http://valasz.hu/magyarokapiacon?page=#pagenum" + # Only one page for this column "initial_pagenum": 1 - "min_pagenum": 2 - "max_pagenum": 1 "gazdasag/pr": "archive_url_format": "http://valasz.hu/pr?page=#pagenum" @@ -63,9 +63,8 @@ "gazdasag/techvilag": "archive_url_format": "http://valasz.hu/techvilag?page=#pagenum" + # Only one page for this column "initial_pagenum": 1 - "min_pagenum": 2 - "max_pagenum": 1 "itthon": "archive_url_format": "http://valasz.hu/itthon?page=#pagenum" @@ -74,33 +73,36 @@ "min_pagenum": 2 "max_pagenum": 2341 -# "itthon/csalad": -# "archive_url_format": "http://valasz.hu/csalad?page=#pagenum" -# -# "initial_pagenum": 1 -# "min_pagenum": 2 -# "max_pagenum": 1 -# -# "itthon/eletmod": -# "archive_url_format": "http://valasz.hu/eletmod?page=#pagenum" -# -# "initial_pagenum": 1 -# "min_pagenum": 2 -# "max_pagenum": 187 -# -# "itthon/felsooktatasi-rangsor": -# "archive_url_format": "http://valasz.hu/felsooktatasi_rangsor?page=#pagenum" -# -# "initial_pagenum": 1 -# "min_pagenum": 2 -# "max_pagenum": 11 -# -# "itthon/reflektor": -# "archive_url_format": "http://valasz.hu/reflektor?page=#pagenum" -# -# "initial_pagenum": 1 -# "min_pagenum": 2 -# "max_pagenum": 86 + # Duplicate: part of "itthon" + "itthon/csalad": + "archive_url_format": "http://valasz.hu/csalad?page=#pagenum" + + # Only one page for this column + "initial_pagenum": 1 + + # Duplicate: part of "itthon" + "itthon/eletmod": + "archive_url_format": "http://valasz.hu/eletmod?page=#pagenum" + + "initial_pagenum": 1 + "min_pagenum": 2 + "max_pagenum": 187 + + # Duplicate: part of "itthon" + "itthon/felsooktatasi-rangsor": + "archive_url_format": "http://valasz.hu/felsooktatasi_rangsor?page=#pagenum" + + "initial_pagenum": 1 + "min_pagenum": 2 + "max_pagenum": 11 + + # Duplicate: part of "itthon" + "itthon/reflektor": + "archive_url_format": "http://valasz.hu/reflektor?page=#pagenum" + + "initial_pagenum": 1 + "min_pagenum": 2 + "max_pagenum": 86 "kultura": "archive_url_format": "http://valasz.hu/kultura?page=#pagenum" @@ -109,47 +111,52 @@ "min_pagenum": 2 "max_pagenum": 1693 -# "kultura/esszencia": -# "archive_url_format": "http://valasz.hu/esszencia?page=#pagenum" -# -# "initial_pagenum": 1 -# "min_pagenum": 2 -# "max_pagenum": 11 -# -# "kultura/gasztronomia": -# "archive_url_format": "http://valasz.hu/gasztronomia?page=#pagenum" -# -# "initial_pagenum": 1 -# "min_pagenum": 2 -# "max_pagenum": 62 -# -# "kultura/kult-tura": -# "archive_url_format": "http://valasz.hu/kult_tura?page=#pagenum" -# -# "initial_pagenum": 1 -# "min_pagenum": 2 -# "max_pagenum": 1 -# -# "kultura/mozi": -# "archive_url_format": "http://valasz.hu/mozi?page=#pagenum" -# -# "initial_pagenum": 1 -# "min_pagenum": 2 -# "max_pagenum": 21 -# -# "kultura/sport": -# "archive_url_format": "http://valasz.hu/sport?page=#pagenum" -# -# "initial_pagenum": 1 -# "min_pagenum": 2 -# "max_pagenum": 437 -# -# "kultura/szinhaz": -# "archive_url_format": "http://valasz.hu/szinhaz?page=#pagenum" -# -# "initial_pagenum": 1 -# "min_pagenum": 2 -# "max_pagenum": 22 + # Duplicate: part of "kultura" + "kultura/esszencia": + "archive_url_format": "http://valasz.hu/esszencia?page=#pagenum" + + "initial_pagenum": 1 + "min_pagenum": 2 + "max_pagenum": 11 + + # Duplicate: part of "kultura" + "kultura/gasztronomia": + "archive_url_format": "http://valasz.hu/gasztronomia?page=#pagenum" + + "initial_pagenum": 1 + "min_pagenum": 2 + "max_pagenum": 62 + + # Duplicate: part of "kultura" + "kultura/kult-tura": + "archive_url_format": "http://valasz.hu/kult_tura?page=#pagenum" + + # Only one page for this column + "initial_pagenum": 1 + + # Duplicate: part of "kultura" + "kultura/mozi": + "archive_url_format": "http://valasz.hu/mozi?page=#pagenum" + + "initial_pagenum": 1 + "min_pagenum": 2 + "max_pagenum": 21 + + # Duplicate: part of "kultura" + "kultura/sport": + "archive_url_format": "http://valasz.hu/sport?page=#pagenum" + + "initial_pagenum": 1 + "min_pagenum": 2 + "max_pagenum": 437 + + # Duplicate: part of "kultura" + "kultura/szinhaz": + "archive_url_format": "http://valasz.hu/szinhaz?page=#pagenum" + + "initial_pagenum": 1 + "min_pagenum": 2 + "max_pagenum": 22 "publi": # Publi column is special! "archive_url_format": "http://valasz.hu/publi?page=#pagenum" @@ -165,15 +172,16 @@ "min_pagenum": 2 "max_pagenum": 1453 -# "vilag/amerika-visszainteget": -# "archive_url_format": "http://valasz.hu/amerika_visszainteget?page=#pagenum" -# -# "initial_pagenum": 1 -# "min_pagenum": 2 -# "max_pagenum": 1 + # Duplicate: part of "vilag" + "vilag/amerika-visszainteget": + "archive_url_format": "http://valasz.hu/amerika_visszainteget?page=#pagenum" + + # Only one page for this column + "initial_pagenum": 1 "portal_specific_exctractor_functions_file": "../extractors/site_specific_extractor_functions.py" "extract_article_urls_from_page_fun": "extract_article_urls_from_page_valasz" +"next_page_of_article_fun": "next_page_of_article_valasz" "next_url_by_pagenum": true "infinite_scrolling": false @@ -185,4 +193,4 @@ # "new_article_url_threshold": 0 "corpus_converter_file": "../extractors/corpus_converters.py" -"corpus_converter": "dummy-converter" +"corpus_converter": "MultiPageArticleConverter" diff --git a/tests/next_page_of_article.warc.gz b/tests/next_page_of_article.warc.gz index f7cbb9be9095138dbb7615f687ceed1803ac71d5..fba6d5c0db33f5912b7339dc1b08eba70234ba0d 100644 GIT binary patch delta 50971 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 z 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%0DqsDjU@`_pL#g4YE16K)xG5sqF7 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 UzsTu85dLg*Fa@`lfPbBJ;MJIuJ)BTZ>IgCz zsUlkKpjz5h$M1{yUSSqCtl^Y3l&$u>6TB5`UNxKR4eMUZVjDby$IG;8nw-@NZSeIH zMU4eFq<`5X_#?jM%vD=^mo5AZ0D#j#IjKFIFH$s1W9U~91v;=f`gNs zqoeR%;Ry+)!DJX`J&>Jp2}q`jO5-2VB2Ci7FrHce0ZoXb!rVB6l4UDocdn501$6L> zAnk)7Z-|qq>)!T$9;@D)%EWrHogew|@+6yX&6xavm@+x1T)MoughNyYt7$L`YgzmN pW7csc;Q_N?Wld?bodHKOw+dDP{aLr90s&-Gv#rkeGqd6|fHBbU!z};+ diff --git a/webarticlecurator/utils.py b/webarticlecurator/utils.py index 4541cfe..33c51ea 100644 --- a/webarticlecurator/utils.py +++ b/webarticlecurator/utils.py @@ -92,14 +92,22 @@ def wrap_input_consants(current_task_config_filename): max_pagenum = column_settings.get('max_pagenum') if settings['next_url_by_pagenum']: + # If column consists of only one page, min_pagenum and max_pagenum must be omited + # while initial_pagenum must be set if 'min_pagenum' not in column_settings: - raise ValueError('min_pagenum must be set, if next_url_by_pagenum is true!') - - # If initial_pagenum is explicitly set, initial_pagenum + 1 == min_pagenum <= max_pagenum must be satisfied! - if ((isinstance(initial_pagenum, int) and min_pagenum != initial_pagenum + 1) or - (isinstance(max_pagenum, int) and min_pagenum > max_pagenum)): - raise ValueError('If initial_pagenum or max_pagenum is set,' - ' initial_pagenum + 1 == min_pagenum <= max_pagenum must be satisfied!') + if 'max_pagenum' in column_settings or 'initial_pagenum' not in column_settings: + raise ValueError('min_pagenum can be omited iff max_pagenum is not present' + ' and initial_pagenum is set, when next_url_by_pagenum is true!') + else: # min_pagenum and max_pagenum are not set, but initial_pagenum is. -> One page column! + min_pagenum = 2 # so max < min and exit immediately + max_pagenum = 1 + else: + # If initial_pagenum is explicitly set as int and min_pagenum is set, + # initial_pagenum + 1 == min_pagenum <= max_pagenum must be satisfied! + if ((isinstance(initial_pagenum, int) and min_pagenum != initial_pagenum + 1) or + (isinstance(max_pagenum, int) and min_pagenum > max_pagenum)): + raise ValueError('If two or more from initial_pagenum, min_pagenum and max_pagenum are set,' + ' initial_pagenum + 1 == min_pagenum <= max_pagenum must be satisfied!') # If initial_pagenum is implicit, then it will be substituted with empty string. e.g. in &page= column_settings['INITIAL_PAGENUM'] = str(initial_pagenum) diff --git a/webarticlecurator/version.py b/webarticlecurator/version.py index b7aa247..a558e6f 100644 --- a/webarticlecurator/version.py +++ b/webarticlecurator/version.py @@ -1,4 +1,4 @@ #!/usr/bin/env pyhton3 # -*- coding: utf-8, vim: expandtab:ts=4 -*- -__version__ = '1.2.0' +__version__ = '1.2.1'