News-Please เป็นโอเพนซอร์สที่ใช้งานง่ายที่ใช้งานได้ง่ายซึ่งแยกข้อมูลที่มีโครงสร้างจากเว็บไซต์ข่าวเกือบทุกแห่ง มันสามารถติดตามการเชื่อมโยงหลายมิติภายในและอ่านฟีด RSS เพื่อดึงทั้งบทความล่าสุดและเก่าที่เก็บถาวร คุณจะต้องจัดเตรียม URL รากของเว็บไซต์ข่าวเพื่อรวบรวมข้อมูลอย่างสมบูรณ์ ข่าวโปรดรวมพลังของไลบรารีและเครื่องมือที่ทันสมัยหลายแห่งเช่นการคัดค้านหนังสือพิมพ์และความสามารถในการอ่าน
ข่าวโปรดมีโหมดห้องสมุดซึ่งช่วยให้นักพัฒนา Python ใช้ฟังก์ชั่นการรวบรวมข้อมูลและการสกัดภายในโปรแกรมของตนเอง ยิ่งไปกว่านั้นข่าวสารยังช่วยให้สามารถรวบรวมข้อมูลและสกัดบทความจากหอจดหมายเหตุขนาดใหญ่ (มาก) ที่ Commoncrawl.org
หากคุณต้องการมีส่วนร่วมในข่าวโปรดอ่านก่อนที่นี่
03/23/2021: หากคุณสนใจใน การจำแนกความเชื่อมั่น ในบทความข่าวลองดูชุดข้อมูลขนาดใหญ่ของเราสำหรับการจำแนกความเชื่อมั่นที่ขึ้นอยู่กับเป้าหมาย นอกจากนี้เรายังเผยแพร่รูปแบบระบบประสาทที่ใช้งานง่ายซึ่งบรรลุประสิทธิภาพที่ทันสมัย เยี่ยมชมโครงการที่นี่
06/01/2018: หากคุณสนใจใน การสกัดเหตุการณ์ จากข่าวคุณอาจต้องการตรวจสอบโครงการใหม่ของเรา GiveMe5W1H - เครื่องมือที่แยกวลีตอบคำถามวารสารห้า W และหนึ่งคำถามเพื่ออธิบายเหตุการณ์หลักของบทความคือผู้ที่ทำอะไรเมื่อใด
ข่าวโปรดสกัดคุณลักษณะดังต่อไปนี้จากบทความข่าว สามารถดูไฟล์ JSON ที่ถูกดึงออกมาได้ที่นี่
ข่าวโปรดสนับสนุนการใช้งานหลักสามกรณีซึ่งอธิบายรายละเอียดเพิ่มเติมในเรื่องต่อไปนี้
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)
หากคุณต้องการรวบรวมข้อมูลหลายบทความในแต่ละครั้งเลือกพารามิเตอร์เสริมใด ๆ ที่ดำเนินการโดย requests.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 ในการกำหนดค่าเริ่มต้นข่าวโปรดเก็บไฟล์ HTML ดั้งเดิม
เป็นไปได้มากว่าคุณจะไม่ต้องการรวบรวมข้อมูลจากเว็บไซต์ที่ให้ไว้ในการกำหนดค่าตัวอย่างของเรา เพียงแค่ตรงไปที่ไฟล์ sitelist.hjson และเพิ่ม URL รูทของหน้าเว็บของช่องข่าวที่คุณเลือก ข่าวโปรดสามารถแยกเหตุการณ์ล่าสุดจากโครงการ GDELT ดูที่นี่
ข่าวโปรดสนับสนุนการส่งออกไปยัง Elasticsearch การใช้ ElasticSearch จะเปิดใช้งานคุณสมบัติการกำหนดเวอร์ชัน ขั้นแรกให้เปิดใช้งานใน config.cfg ที่ไดเรกทอรี config ซึ่งเป็นค่าเริ่มต้น ~/news-please/config แต่ยังสามารถเปลี่ยนแปลงได้ด้วยพารามิเตอร์ -c ไปยังตำแหน่งที่กำหนดเอง ในกรณีที่ไดเรกทอรีไม่มีอยู่ไดเรกทอรีเริ่มต้นจะถูกสร้างขึ้นที่ตำแหน่งที่ระบุ
[Scrapy]
ITEM_PIPELINES = {
'newsplease.pipeline.pipelines.ArticleMasterExtractor' :100 ,
'newsplease.pipeline.pipelines.ElasticsearchStorage' :350
} แค่ไหน! ยกเว้นหากฐานข้อมูล Elasticsearch ของคุณไม่ได้อยู่ที่ http://localhost:9200 ใช้ชื่อผู้ใช้/รหัสผ่านอื่นหรือการตรวจสอบความถูกต้องของ CA-certificate ในกรณีเหล่านี้คุณจะต้องเปลี่ยนสิ่งต่อไปนี้
[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 และวิธีการตั้งค่าสภาพแวดล้อมการผลิต
ข่าวโปรดอนุญาตให้จัดเก็บบทความในฐานข้อมูล 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 Elasticache และ 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 ("ใบอนุญาต"); คุณไม่สามารถใช้ข่าวได้ยกเว้นตามใบอนุญาต สำเนาของใบอนุญาตรวมอยู่ในโครงการดูไฟล์ license.txt
เว้นแต่ว่ากฎหมายที่บังคับใช้หรือตกลงเป็นลายลักษณ์อักษรซอฟต์แวร์ที่แจกจ่ายภายใต้ใบอนุญาตจะถูกแจกจ่ายตาม "ตามพื้นฐาน" โดยไม่มีการรับประกันหรือเงื่อนไขใด ๆ ไม่ว่าจะโดยชัดแจ้งหรือโดยนัย ดูใบอนุญาตสำหรับภาษาเฉพาะที่ควบคุมการอนุญาตและข้อ จำกัด ภายใต้ใบอนุญาต โลโก้ข่าวโปรดได้รับความอนุเคราะห์จาก Mario Hamborg
ลิขสิทธิ์ 2016-2024 ทีมข่าวโปรด