Scraper Cli
TAKE-AWAY:
- Đã thử dùng Google Custom Search nhưng không hiệu quả, không như ý mình muốn. Cách tốt nhất là viết riêng scraper cho một vài site top trong lĩnh vực là đủ. Không cần qua nhiều site
Project environment
- http://xxx/a/misc.crypto/cpanel/xxx?q=ethereum
- Thư mục
/cli
hiện có:/space1/cli/import_news_wsj.php
- Code tương tự:
/space1/customers/chinesehaohao.com/sites/front/controller/ChineseToolsController.php
- http://…/a/misc.crypto/cpanel/xxx
- /…/shared/helper/BaseScraper.php
- /…/shared/helper/pCurl.php
- pCURL::download($url);
Architecture
- Load data từ nhiều sources
- Lưu headlines vào MongoDB
- Có 1 cpanel để xem các headline
- Dùng thông qua RSS
- Để không cần custom-parse HTML -> dễ bảo trì hơn, không phải phụ thuộc vào cấu trúc html của các page
- Không bị cản trở bởi các site load dữ liệu bằng JS
- UPDATED: RSS của nhiều site không có đầy đủ như phiên bản HTML
- –> Tùy site mà dùng RSS hay dùng HTML
- Không dùng send qua mail vì không có full control (VD: không dùng query để search được)
- Frontend cpanel
- Cho xem headlines
- Cho phép search headlines?
Performance consideration
- Để không làm quá tải server
- Bao lâu chạy 1 lần?
Questions
- Nên đặt vào thư mục
/cli
hiện có? –> YES - Phần lấy news của chinesehaohao?
- Hoặc dùng Google Search API? –> Rất tiềm năng, vì khi đó có unlimited sources, có những source mới, mà không bị giới hạn vào các source hiện có của mình
- https://developers.google.com/custom-search/v1/overview
- Playground: https://developers.google.com/custom-search/v1/reference/rest/v1/cse/list?apix=true
- VẤN ĐỀ: Programmable Search của Google buộc phải giới hạn cho một list các domain nào đó mà thôi ==> cũng được, có thể cho 1 list các site quan tâm vào đây
- https://cse.google.com/cse?cx=6c613d5806bf0f801
- VẤN ĐỀ: Mỗi query chỉ trả về 10 kết quả; và giới hạn 1 ngày chỉ thực hiện 100 queries ==> Nếu mỗi lần lấy 3 trang thì sẽ lấy được 30 lần free; như vậy mỗi h mình chạy một lần cũng đủ
- Nhưng như vậy là chỉ với 1 từ khóa; –> có thể bỏ sót các tin khác
/space1/cli/import_news_wsj.php
Google Custom Search Engine
Template:
https://www.googleapis.com/customsearch/v1?q={searchTerms}&num={count?}&start={startIndex?}&lr={language?}&safe={safe?}&cx={cx?}&sort={sort?}&filter={filter?}&gl={gl?}&cr={cr?}&googlehost={googleHost?}&c2coff={disableCnTwTranslation?}&hq={hq?}&hl={hl?}&siteSearch={siteSearch?}&siteSearchFilter={siteSearchFilter?}&exactTerms={exactTerms?}&excludeTerms={excludeTerms?}&linkSite={linkSite?}&orTerms={orTerms?}&relatedSite={relatedSite?}&dateRestrict={dateRestrict?}&lowRange={lowRange?}&highRange={highRange?}&searchType={searchType}&fileType={fileType?}&rights={rights?}&imgSize={imgSize?}&imgType={imgType?}&imgColorType={imgColorType?}&imgDominantColor={imgDominantColor?}&alt=json
Ví dụ:
https://customsearch.googleapis.com/customsearch/v1?key=AIzaSyAt8AkrmkiLVghrcKA3lFh37R79rSG0NsE&cx=003470263288780838160:ty47piyybua&dateRestrict=d[1]&exactTerms=Solana&q=SOlana+ATH&source=lnt&tbs=qdr:h&sa=X&biw=1280&bih=619&dpr=1&count=100