يعد News-Please زاحفًا أخبارًا مفتوح المصدر يسهل الاستخدام يستخرج المعلومات المنظمة من أي موقع إخباري تقريبًا. يمكن أن تتبع ارتباطات تشعبية داخلية وقراءة خلاصات RSS لجلب أحدث مقالات مؤهلة وأيضًا مؤشفة. تحتاج فقط إلى توفير عنوان URL للجذر لموقع الأخبار لزحفه تمامًا. تجمع الأخبار بين قوة المكتبات والأدوات الحديثة ، مثل Scrapy ، والصحف ، وقابلية القراءة.
يتميز Lews-Please أيضًا بوضع مكتبة ، والذي يسمح لمطوري Python باستخدام وظائف الزحف والاستخراج في برنامجهم الخاص. علاوة على ذلك ، يسمح Lews-Please بالزحف واستخراج المقالات من أرشيف الأخبار الكبير (جدًا) على CommonCrawl.org.
إذا كنت ترغب في المساهمة في عصر الأخبار ، فيرجى القراءة أولاً هنا.
03/23/2021: إذا كنت مهتمًا بتصنيف المشاعر في المقالات الإخبارية ، تحقق من مجموعة البيانات على نطاق واسع لتصنيف المشاعر المعتمدة على الهدف. ننشر أيضًا نموذجًا عصبيًا سهل الاستخدام يحقق أداءً حديثًا. قم بزيارة المشروع هنا.
06/01/2018: إذا كنت مهتمًا باستخلاص الأحداث من الأخبار ، فقد ترغب أيضًا في الاطلاع على مشروعنا الجديد ، GiveMe5W1H - وهي أداة تستخلص عبارات الإجابة على الصحافة الخمسة و أسئلة واحدة لوصف الحدث الرئيسي للمقال ، أي ، من فعل ما ، ومتى ، ولماذا ، وكيف.
يستخلص الأخبار عن السمات التالية من المقالات الإخبارية. يمكن الاطلاع على ملف json examplary كما تم استخلاصه من قبل الأخبار.
يدعم News-Please ثلاث حالات استخدام رئيسية ، والتي يتم شرحها بمزيد من التفصيل في ما يلي.
python3 -m newsplease.examples.commoncrawl إنه أمر سهل للغاية ، نحن نعد!
يدير الأخبار على Python 3.8+.
$ pip install news-pleaseيمكنك الوصول إلى الوظيفة الأساسية لإصابة الأخبار ، أي استخراج المعلومات شبه المنظمة من مقالة أخبار أو أكثر ، في الكود الخاص بك باستخدام مربع الأخبار في وضع المكتبة. إذا كنت ترغب في استخدام استخراج موقع News-Please الكامل (بالنظر إلى عنوان URL الجذر فقط) أو وضع الزحف المستمر (باستخدام RSS) ، فستحتاج إلى استخدام وضع CLI ، الموصوف لاحقًا.
from newsplease import NewsPlease
article = NewsPlease . from_url ( 'https://www.nytimes.com/2017/02/23/us/politics/cpac-stephen-bannon-reince-priebus.html?hp' )
print ( article . title )يمكن العثور على عينة من مقالة مستخرجة هنا (كملف JSON).
إذا كنت ترغب في زحف مقالات متعددة في وقت واحد ، اختياريًا مع أي معلمة اختيارية يتم أخذها بواسطة طلبات. REQUEST ()
NewsPlease . from_urls ([ url1 , url2 , ...], request_args = { "timeout" : 6 })أو إذا كان لديك ملف يحتوي على جميع عناوين URL (كل سطر يحتوي على عنوان URL واحد)
NewsPlease . from_file ( path )أو إذا كان لديك بيانات HTML الخام (يمكنك أيضًا توفير عنوان URL الأصلي لزيادة دقة استخراج تاريخ النشر)
NewsPlease . from_html ( html , url = None )أو إذا كان لديك ملف WARC (تحقق أيضًا من سير عمل CommonCrawl الخاص بنا ، والذي يوفر طرقًا مريحة لتصفية أرشيف CommonCrawl لمنافذ وتواريخ أخبار محددة)
NewsPlease . from_warc ( warc_record )في وضع المكتبة ، ستحاول إيسبر الأخبار تنزيل المعلومات واستخراجها من كل عنوان URL. ستعود الوظائف الموصوفة مسبقًا ، على سبيل المثال ، بمجرد أن تحاول إيراد الأخبار جميع عناوين URL. تحتوي القائمة الناتجة على جميع المقالات المستخرجة بنجاح.
أخيرًا ، يمكنك معالجة المعلومات المستخرجة الواردة في كائن (كائن) المقالة. على سبيل المثال ، للتصدير إلى تنسيق JSON ، يمكنك استخدام:
import json
with open ( "article.json" , "w" ) as file :
json . dump ( article . get_serializable_dict (), file )$ news-please سيبدأ بعد ذلك في تزحف بعض صفحات الأمثلة. لإنهاء العملية ، اضغط على CTRL+C . سيتم إغلاق الأخبار بعد ذلك في غضون 5-60 ثانية. يمكنك أيضًا الضغط على CTRL+C مرتين ، والتي ستقتل العملية على الفور (غير موصى بها ، على الرغم من).
يتم تخزين النتائج افتراضيًا في ملفات JSON في مجلد data . في التكوين الافتراضي ، يخزن Its-Please أيضًا ملفات HTML الأصلية.
على الأرجح ، لن ترغب في الزحف من مواقع الويب المتوفرة في تكوين مثالنا. ما عليك سوى التوجه إلى ملف sitelist.hjson وأضف عناوين URL الجذر لصفحات الويب الخاصة بمنافذ الأخبار التي تختارها. يمكن لـ News-Please أيضًا استخراج أحدث الأحداث من مشروع Gdelt ، انظر هنا.
تدعم الأخبار أيضًا التصدير إلى Elasticsearch. سيؤدي استخدام Elasticsearch أيضًا إلى تمكين ميزة الإصدار. أولاً ، قم بتمكينه في config.cfg في دليل التكوين ، والذي يكون افتراضيًا ~/news-please/config ولكن يمكن تغييره أيضًا باستخدام المعلمة -c إلى موقع مخصص. في حالة عدم وجود الدليل ، سيتم إنشاء دليل افتراضي في الموقع المحدد.
[Scrapy]
ITEM_PIPELINES = {
'newsplease.pipeline.pipelines.ArticleMasterExtractor' :100 ,
'newsplease.pipeline.pipelines.ElasticsearchStorage' :350
} هذا كل شيء! باستثناء ، إذا لم تكن قاعدة بيانات Elasticsearch موجودة في http://localhost:9200 ، تستخدم اسم مستخدم/كلمة مرور مختلفة أو مصادقة ca ca. في هذه الحالات ، ستحتاج أيضًا إلى تغيير ما يلي.
[Elasticsearch]
host = localhost
port = 9200
...
# Credentials used for authentication (supports CA-certificates):
use_ca_certificates = False # True if authentification needs to be performed
ca_cert_path = '/path/to/cacert.pem'
client_cert_path = '/path/to/client_cert.pem'
client_key_path = '/path/to/client_key.pem'
username = 'root'
secret = 'password' يتيح إيجار الأخبار تخزين المقالات لقاعدة بيانات postgresql ، بما في ذلك ميزة الإصدار. للتصدير إلى postgresql ، افتح ملف التكوين المقابل ( config_lib.cfg لوضع المكتبة و config.cfg لوضع cli) وإضافة وحدة postgresqlstorage إلى خط الأنابيب وتعديل بيانات اعتماد قاعدة البيانات:
[Scrapy]
ITEM_PIPELINES = {
'newsplease.pipeline.pipelines.ArticleMasterExtractor' :100 ,
'newsplease.pipeline.pipelines.PostgresqlStorage' :350
}
[Postgresql]
# Postgresql-Connection required for saving meta-informations
host = localhost
port = 5432
database = 'news-please'
# schema = 'news-please'
user = 'user'
password = 'password' إذا كنت تخطط لاستخدام صياغة الأخبار وتصديرها إلى postgreSQL في بيئة الإنتاج ، فإننا نوصي بإلغاء تثبيت الحزمة psycopg2-binary وتثبيت psycopg2 . نستخدم السابق لأنه لا يتطلب برنامج التحويل البرمجي C من أجل تثبيته. انظر هنا ، لمزيد من المعلومات حول الاختلافات بين psycopg2 و psycopg2-binary وكيفية إعداد بيئة الإنتاج.
يسمح Lews-Please بتخزين المقالات على قاعدة بيانات Redis ، بما في ذلك ميزة الإصدار. للتصدير إلى redis ، افتح ملف التكوين المقابل ( config_lib.cfg لوضع المكتبة و config.cfg لوضع cli) وإضافة وحدة إعادة redisStorage إلى خط الأنابيب وضبط بيانات اعتماد الاتصال:
[Scrapy]
ITEM_PIPELINES = {
'newsplease.pipeline.pipelines.ArticleMasterExtractor' :100 ,
'newsplease.pipeline.pipelines.RedisStorage' :350
}
[Redis]
host = localhost
port = 6379
db = 0
# You can add any redis connection parameter here
ssl_check_hostname = True
username = "news-please"
max_connections = 24يجب أن يكون خط الأنابيب هذا متوافقًا أيضًا مع AWS ListInache و GCP MemoryStore
لقد جمعنا مجموعة من المعلومات المفيدة لكل من المستخدمين والمطورين. كمستخدم ، من المرجح أن تتعامل فقط مع ملفين: sitelist.hjson (لتحديد المواقع المراد زحفها) و config.cfg (ربما نادرًا فقط ، في حال كنت ترغب في تعديل التكوين).
يمكنك العثور على مزيد من المعلومات حول الاستخدام والتطوير في ويكي! قبل الاتصال بنا ، يرجى مراجعة الويكي. إذا كان لا يزال لديك أسئلة حول كيفية استخدام عصر الأخبار ، فيرجى إنشاء سؤال جديد في المناقشات هنا على Github. يرجى فهم أننا غير قادرين على تقديم الدعم الفردي عبر البريد الإلكتروني. نعتقد أن المساعدة أكثر قيمة إذا تمت مشاركتها علنًا حتى يتمكن المزيد من الأشخاص من الاستفادة منها. ومع ذلك ، إذا كنت لا تزال بحاجة إلى دعم فردي ، على سبيل المثال ، بسبب سرية مشروعك ، فقد نتمكن من تزويدك بالتشاور الخاص. اتصل بنا للحصول على معلومات حول التسعير ومزيد من التفاصيل.
بالنسبة لتقارير الأخطاء ، نطلب منك استخدام قالب تقرير الأخطاء. تأكد من أنك تستخدم أحدث إصدار من أخبار الإصابة ، حيث لا يمكننا تقديم الدعم للإصدارات القديمة. كما هو موضح سابقًا ، لا يمكننا تقديم الدعم للمشكلات أو الأسئلة المرسلة عبر البريد الإلكتروني.
تبرعاتك موضع تقدير كبير! سيقومون بتحريرنا للعمل في هذا المشروع أكثر ، لتولي مهام مثل إضافة ميزات جديدة ، ودعم خلل الأخطاء ، ومعالجة المزيد من المخاوف مع المكتبة.
لم يكن هذا المشروع ممكنًا بدون مساهمات الطلاب التاليين (المطلوبة أبجديًا):
كما نشكر جميع المساهمين الآخرين ، والتي يمكنك العثور عليها على صفحة المساهمين!
إذا كنت تستخدم صياغة الأخبار ، فيرجى الاستشهاد بالورقة (ResearchGate ، Mendeley):
@InProceedings{Hamborg2017,
author = {Hamborg, Felix and Meuschke, Norman and Breitinger, Corinna and Gipp, Bela},
title = {news-please: A Generic News Crawler and Extractor},
year = {2017},
booktitle = {Proceedings of the 15th International Symposium of Information Science},
location = {Berlin},
doi = {10.5281/zenodo.4120316},
pages = {218--223},
month = {March}
}
يمكنك العثور على مزيد من المعلومات حول هذا ومشاريع الأخبار الأخرى على موقعنا.
هل تريد المساهمة؟ رائع ، نحن سعداء دائمًا بأي دعم في هذا المشروع! نحن نبحث بشكل خاص عن طلبات السحب التي تعمل على إصلاح الأخطاء. نرحب أيضًا بطلبات السحب التي تساهم في أفكارك الخاصة.
من خلال المساهمة في هذا المشروع ، فإنك توافق على أن مساهماتك سيتم ترخيصها بموجب ترخيص المشروع.
نحن نحب المساهمات من قبل مستخدمينا! إذا كنت تخطط لتقديم طلب سحب ، فيرجى فتح مشكلة أولاً و desribe المشكلة التي تريد إصلاحها أو ما تريد تحسينه وكيف! وبهذه الطريقة ، يمكننا مناقشة ما إذا كان يمكن إضافة فكرتك إلى صياغة الأخبار في المقام الأول ، وإذا كان الأمر كذلك ، في أفضل طريقة لتنفيذها لتناسب أسلوب الهندسة المعمارية والترميز. في هذه القضية ، يرجى ذكر أنك تخطط لتنفيذ الميزات الموصوفة.
لسوء الحظ ، ليس لدينا موارد لتنفيذ الميزات التي يطلبها المستخدمون. بدلاً من ذلك ، نوصي بتنفيذ ميزات تحتاجها ، وإذا كنت ترغب في فتح طلب سحب هنا حتى يتمكن المجتمع من الاستفادة من التحسينات الخاصة بك أيضًا.
مرخصة بموجب ترخيص Apache ، الإصدار 2.0 ("الترخيص") ؛ لا يجوز لك استخدام عصر الأخبار إلا في الامتثال للترخيص. يتم تضمين نسخة من الترخيص في المشروع ، راجع ترخيص الملف.
ما لم يكن مطلوبًا بموجب القانون المعمول به أو الموافقة على الكتابة ، يتم توزيع البرامج الموزعة بموجب الترخيص على أساس "كما هي" ، دون ضمانات أو شروط من أي نوع ، إما صريحة أو ضمنية. راجع ترخيص الأذونات والقيود التي تحكم اللغة المحددة بموجب الترخيص. شعار الأخبار من باب المجاملة لماريو هامبورغ.
حقوق الطبع والنشر 2016-2024 فريق الأخبار