Cách lấy dữ liệu từ Bing News
Advanced Data Extraction Specialist
Tóm tắt:
- Kết quả Bing News sống động trong các phần tử
.news-card, và dữ liệu sạch nằm trong các thuộc tính, không phải văn bản. Mỗi thẻ mangdata-title, thuộc tínhurl, vàdata-author(nhà phát hành) — đọc những cái đó thay vì quét văn bản đã hiển thị, cái mà hòa trộn cả thời gian. - Trang được hiển thị ở phía khách, vì vậy bạn cần một trình duyệt thực. Bing xây dựng lưới tin tức bằng JavaScript sau khi tải ban đầu; một yêu cầu HTTP đơn giản chỉ trả về vỏ, không có thẻ.
- Phân trang là một độ chênh lệch trên URL. Thêm
&first=11,&first=21, … để đi sâu hơn vào các trang kết quả — không có nút "tiếp theo" để nhấn, chỉ có độ chênh lệch. - Lấy đoạn trích từ thuộc tính
title..snippethiển thị văn bản rút gọn trên màn hình nhưng lưu trữ toàn bộ tóm tắt trong thuộc tínhtitlecủa nó. - Gắn kết egress dân cư của Mỹ để có kết quả ổn định. Bing định vị địa lý và giới hạn tốc độ theo IP; một phiên kết nối dân cư ổn định của Mỹ giữ cho tập hợp kết quả và đánh dấu có thể dự đoán được.
- Miễn phí để bắt đầu. Các tài khoản Scrapeless mới bao gồm thời gian chạy Trình duyệt Quét miễn phí — đăng ký tại app.scrapeless.com.
Giới thiệu: biến Bing News thành một nguồn tin có cấu trúc
Một trang tìm kiếm Bing News là một nguồn tin sống động, dựa trên truy vấn — tiêu đề, nhà phát hành, thời gian và tóm tắt cho bất kỳ chủ đề nào bạn đưa ra. Điều đó làm cho nó trở nên hữu ích cho việc giám sát thương hiệu, nghiên cứu thị trường và cung cấp các bài viết mới cho một tác nhân AI. Vấn đề là không có gì trong số đó được gửi dưới dạng HTML sạch mà bạn có thể grep.
Lưới tin tức được xây dựng trong trình duyệt. Tải bing.com/news/search bằng một khách hàng HTTP đơn giản và bạn nhận được khung trang, không có câu chuyện — các thẻ chỉ xuất hiện sau khi JavaScript chạy. Và một khi chúng được hiển thị, văn bản trên màn hình làm lẫn lộn nhà phát hành và thời gian tương đối ("15h trên MSN"), vì vậy việc đọc innerText cho bạn dữ liệu mà bạn sau đó phải gỡ rối.
Hướng dẫn này chạy một bộ quét Bing News trên Trình duyệt Quét Scrapeless — một trình duyệt đám mây chống phát hiện được kết nối với Puppeteer — và đọc các thuộc tính có cấu trúc mà Bing đã đính kèm vào mỗi thẻ. Mọi đoạn trích dưới đây đều được thực hiện trên một tìm kiếm trực tiếp. Chỉ có kết quả công khai.
Những gì bạn có thể làm với nó
- Xây dựng một nguồn tin theo chủ đề — lấy mọi tiêu đề, nhà phát hành, liên kết và tóm tắt cho một thuật ngữ tìm kiếm.
- Giám sát một thương hiệu hoặc sản phẩm bằng cách chạy lại cùng một truy vấn theo lịch trình và so sánh các kết quả.
- Thu thập các URL bài viết để chuyển cho một bộ thu thập văn bản đầy đủ ở phía dưới.
- Đi sâu vào các trang kết quả với độ chênh lệch
first=để thu thập nhiều hơn so với màn hình đầu tiên. - Cung cấp cho một tác nhân AI một bộ tin tức sạch, có cấu trúc thay vì HTML thô.
Tại sao là Trình duyệt Quét Scrapeless
Trình duyệt Quét Scrapeless là một trình duyệt đám mây tùy chỉnh, chống phát hiện, được thiết kế cho các trình thu thập web và tác nhân AI. Đối với Bing News cụ thể, nó mang lại:
- Chromium tự phát triển — hiển thị JavaScript tạo ra lưới tin tức, do đó các thẻ thực sự tồn tại trong DOM.
- Dấu vân tay chống phát hiện — phiên đọc như một trình duyệt thực, vì vậy trang kết quả được phục vụ bình thường.
- Proxy dân cư ở hơn 195 quốc gia — gắn kết egress của Mỹ để Bing trả về một tập hợp kết quả nhất quán, định vị.
- Tính bền vững của phiên — giữ một phiên ấm áp trong các yêu cầu phân trang.
- Kết nối Puppeteer tiêu chuẩn —
Puppeteer.connect()trả về mộtBrowserbình thường; mã trích xuất của bạn là Puppeteer thuần.
Nhận mã API của bạn trên gói miễn phí tại app.scrapeless.com.
Các điều kiện tiên quyết
- Node.js 18 trở lên
- Một tài khoản Scrapeless và mã API — đăng ký tại app.scrapeless.com
- Kiến thức cơ bản về Puppeteer
Cài đặt
bash
npm install @scrapeless-ai/sdk puppeteer-core
bash
export SCRAPELESS_API_KEY="your_api_token_here"
Bước 1 — Kết nối và tải tìm kiếm
Kết nối với trình duyệt đám mây, gắn kết egress của Mỹ và mở URL tìm kiếm tin tức cho truy vấn của bạn. Truy vấn nằm trong tham số q:
javascript
import { Puppeteer } from '@scrapeless-ai/sdk';
const browser = await Puppeteer.connect({
apiKey: process.env.SCRAPELESS_API_KEY,
sessionName: 'bing-news',
proxyCountry: 'US',
sessionTTL: 300,
});
const page = await browser.newPage();
const query = 'openai';
await page.goto(`https://www.bing.com/news/search?q=${encodeURIComponent(query)}`, {
waitUntil: 'networkidle2',
timeout: 60000,
});
console.log(await page.title());
// 'openai - Tìm kiếm Tin tức'
networkidle2 chờ cho các yêu cầu kết quả ổn định, vì vậy các thẻ mới có trong DOM trước khi bạn đọc chúng.
Bước 2 — Trích xuất các thẻ từ thuộc tính của chúng
Mỗi kết quả là một .news-card. Thay vì phân tích văn bản đã hiển thị, đọc các thuộc tính cấu trúc mà Bing gắn vào thẻ — chúng cho bạn tiêu đề sạch, liên kết và nhà phát hành một cách trực tiếp:
javascript
const articles = await page.evaluate(() => {
```javascript
const abs = (u) => { try { return new URL(u, location.href).href; } catch { return null; } };
return [...document.querySelectorAll('.news-card')]
.map((card) => ({
title: card.getAttribute('data-title'),
url: abs(card.getAttribute('url')),
source: card.getAttribute('data-author'),
snippet:
card.querySelector('.snippet')?.getAttribute('title') ||
card.querySelector('.snippet')?.innerText?.trim() ||
null,
}))
.filter((a) => a.title && a.url);
});
console.log(articles.length, 'bài báo');
console.log(articles[0]);
// 12 bài báo
// {
// title: "Doanh nghiệp công nghệ Nhật Bản SoftBank triển khai 'bản vá' OpenAI chống lại các cuộc tấn công mạng",
// url: 'https://apnews.com/article/openai-softbank-japan-technology-intelligence-cyberattacks-d8d3f9b2e5042ea949a7d5c53b782d96',
// source: 'Tin tức Associated Press',
// snippet: 'Tập đoàn công nghệ khổng lồ Nhật Bản SoftBank Group Corp. đang ra mắt một dịch vụ ...'
// }
data-author là tên nhà xuất bản tự nó ("Tin tức Associated Press"), mà không có thời gian "15h trên MSN" mà văn bản hiển thị có. Phần tử .snippet bị cắt ngắn trên màn hình nhưng giữ tóm tắt đầy đủ trong thuộc tính title, vì vậy hãy đọc cái đó trước.
Nhận khóa API của bạn trên gói miễn phí: app.scrapeless.com
Bước 3 — Trang thêm kết quả sâu hơn
Bing Tin tức phân trang với một offset first= trên URL — không có nút kế tiếp, bạn chỉ cần bước offset lên mười. Tái sử dụng cùng một phiên và loại bỏ trùng lặp theo tiêu đề, vì Bing sắp xếp lại một số thẻ trên các trang:
javascript
const seen = new Map();
for (const first of [1, 11, 21]) {
await page.goto(
`https://www.bing.com/news/search?q=${encodeURIComponent(query)}&first=${first}`,
{ waitUntil: 'networkidle2', timeout: 60000 }
);
const batch = await page.evaluate(() =>
[...document.querySelectorAll('.news-card')]
.map((card) => card.getAttribute('data-title'))
.filter(Boolean)
);
for (const title of batch) seen.set(title, true);
console.log(`first=${first}: ${batch.length} thẻ, ${seen.size} duy nhất cho đến nay`);
}
// first=1: 10 thẻ, 10 duy nhất cho đến nay
// first=11: 10 thẻ, 18 duy nhất cho đến nay
// first=21: 10 thẻ, 26 duy nhất cho đến nay
Mỗi offset trả về khoảng mười thẻ; số lượng duy nhất đang chạy tăng lên khi bạn tiến lên. Tiếp tục bước cho đến khi tổng duy nhất ngừng tăng — đó là kết thúc của bộ kết quả cho truy vấn.
Những gì bạn nhận được
Mỗi bài báo là một bản ghi phẳng — tiêu đề, liên kết, nhà xuất bản và tóm tắt:
json
[
{
"title": "SoftBank ra mắt sản phẩm an ninh mạng dựa trên các mô hình OpenAI",
"url": "https://www.msn.com/en-in/lifestyle/style/softbank-launches-cybersecurity-product-based-on-openai-models/ar-AA25LC2i",
"source": "The Economic Times trên MSN",
"snippet": "Sản phẩm \"Patching as a Service\" sẽ được triển khai tại Nhật Bản thông qua một liên doanh ..."
}
]
// Lược đồ phản ánh chính xác những gì mà đánh giá Bước 2 phát ra. Giá trị trường là các mẫu minh họa.
Một số quan sát thành thật:
- Số lượng kết quả mỗi trang không cố định. Màn hình đầu tiên hiển thị khoảng một tá thẻ; các trang offset trả về mười mỗi trang. Đếm những gì bạn có, đừng giả định kích thước trang.
- Một số thẻ lặp lại trên các offset. Bing sắp xếp lại kết quả, vì vậy hãy loại bỏ trùng lặp theo tiêu đề hoặc URL khi bạn phân trang.
- Định dạng nhà xuất bản thay đổi.
data-authorthường là tên sạch, nhưng các câu chuyện phân phối đọc "… trên MSN"; chuẩn hóa nếu bạn căn cứ vào nhà xuất bản. - Liên kết trỏ đến bên ngoài. Thuộc tính
urldẫn đến bài viết của nhà xuất bản, không phải là chuyển hướng Bing — tốt cho việc đưa thẳng đến một bộ thu thập văn bản đầy đủ.
Kết luận: một nguồn cấp dữ liệu tin tức Bing có cấu trúc
Một trình thu thập Bing News đáng tin cậy là render → đọc các thuộc tính thẻ → bước offset first=. Render trong một trình duyệt thực để lưới tồn tại, lấy data-title/url/data-author thay vì phân tách văn bản hiển thị, và phân trang theo offset trong khi loại bỏ trùng lặp. Chạy trên Trình duyệt thu thập dữ liệu Scrapeless cung cấp việc render Chromium và egress dân cư giúp kết quả tải một cách nhất quán. Để biến các liên kết thu thập được thành nội dung bài viết đầy đủ, ghép cặp điều này với một trình thu thập trang web được xây dựng theo cách tương tự; trang sản phẩm Trình thu thập dữ liệu và tài liệu đề cập đến toàn bộ bề mặt SDK. Ghim egress của Mỹ, đọc các thuộc tính và bước qua offset.
Sẵn sàng để xây dựng quy trình dữ liệu AI của bạn?
Tham gia cộng đồng của chúng tôi để nhận gói miễn phí và kết nối với các nhà phát triển đang xây dựng quy trình tin tức và tìm kiếm: Discord · Telegram.
Đăng ký tại app.scrapeless.com để nhận miễn phí thời gian chạy Scraping Browser và điều chỉnh các mẫu ở trên cho các truy vấn và khu vực mà bạn cần theo dõi. Xem bảng giá để biết thông tin về quy mô.
Câu hỏi thường gặp
Q: Việc thu thập Bing News có hợp pháp không?
Việc thu thập các kết quả tìm kiếm công khai là thường được phép, nhưng Điều khoản dịch vụ của Bing và luật địa phương vẫn áp dụng đối với cách bạn lưu trữ và sử dụng dữ liệu. Chỉ thu thập các kết quả công khai, tôn trọng các quy tắc robots và ToS, và tham khảo ý kiến luật sư cho trường hợp của bạn.
Q: Tôi có cần một proxy không?
Có — gán proxyCountry: 'US' (hoặc khu vực mục tiêu của bạn). Bing định vị và hạn chế theo tỷ lệ dựa trên IP, vì vậy một kết nối nội trú ổn định giữ cho tập kết quả và markup đồng nhất.
Q: Tôi nhận được trang nhưng không có thẻ. Điều gì sai?
Các thẻ được hiển thị bởi JavaScript. Một yêu cầu HTTP đơn thuần chỉ trả lại khung; tải trang trong Scraping Browser và chờ đến networkidle2 để lưới có mặt trong DOM trước khi bạn đọc nó.
Q: Làm thế nào để tôi có được nhiều hơn trang đầu tiên của kết quả?
Bước chuyển first= trên URL — &first=11, &first=21, và cứ thế — tái sử dụng cùng một phiên, và loại bỏ trùng lặp theo tiêu đề vì một số thẻ xuất hiện lại trên các trang.
Q: Markup đã thay đổi và các bộ chọn của tôi bị hỏng. Tại sao?
Bing cập nhật bố cục của mình theo định kỳ. Kiểm tra lại các tên thuộc tính thẻ (data-title, url, data-author) trên một trang trực tiếp và thắt chặt các bộ chọn của bạn khi chúng thay đổi.
Q: Tôi có thể chạy bao nhiêu truy vấn song song?
Giữ mức độ song song ở mức vừa phải — ba phiên trên mỗi máy chủ là một giới hạn an toàn cho các phiên chạy song song trên cùng một trang web.
Q: Tôi có thể thực hiện điều này mà không cần một tác nhân AI không?
Có. Đó chỉ là Puppeteer giản đơn trên phiên Scrapeless — không cần tác nhân.
Tại Scrapless, chúng tôi chỉ truy cập dữ liệu có sẵn công khai trong khi tuân thủ nghiêm ngặt các luật, quy định và chính sách bảo mật trang web hiện hành. Nội dung trong blog này chỉ nhằm mục đích trình diễn và không liên quan đến bất kỳ hoạt động bất hợp pháp hoặc vi phạm nào. Chúng tôi không đảm bảo và từ chối mọi trách nhiệm đối với việc sử dụng thông tin từ blog này hoặc các liên kết của bên thứ ba. Trước khi tham gia vào bất kỳ hoạt động cạo nào, hãy tham khảo ý kiến cố vấn pháp lý của bạn và xem xét các điều khoản dịch vụ của trang web mục tiêu hoặc có được các quyền cần thiết.



