Googlescraper เป็นเครื่องมือโอเพ่นซอร์สและจะยังคงเป็นเครื่องมือโอเพ่นซอร์สในอนาคต
นอกจากนี้ผู้สืบทอดที่ทันสมัยของ Googlescraper ซึ่งเป็นโครงสร้างพื้นฐานการรวบรวมข้อมูลทั่วไปจะยังคงเป็นโอเพ่นซอร์สและฟรี
อย่างไรก็ตามบางคนต้องการมีบริการที่ช่วยให้พวกเขาขูดข้อมูลบางอย่างจาก Google หรือเครื่องมือค้นหาอื่น ๆ ได้อย่างรวดเร็ว ด้วยเหตุนี้ฉันจึงสร้าง Web Service Scrapeulules.com
สถานะสุดท้าย: Feburary 2019
ผู้สืบทอดของ Googlescraper สามารถพบได้ที่นี่
ซึ่งหมายความว่าฉันจะไม่รักษาโครงการนี้อีกต่อไป การพัฒนาใหม่ทั้งหมดดำเนินไปในโครงการข้างต้น
มีสาเหตุหลายประการที่ฉันจะไม่พยายามอย่างต่อเนื่องในโครงการนี้
ด้วยเหตุนี้ฉันจะพัฒนาห้องสมุดขูดที่ชื่อ https://www.npmjs.com/package/se-scraper ใน JavaScript ซึ่งทำงานอยู่ด้านบนของ Puppeteer
คุณสามารถดาวน์โหลดแอพได้ที่นี่: https://www.npmjs.com/package/se-scraper
รองรับเครื่องมือค้นหาที่หลากหลายและมีประสิทธิภาพมากกว่า googlescraper มาก ฐานรหัสยังซับซ้อนน้อยกว่ามากโดยไม่ต้องมีเกลียว/คิวและความสามารถในการบันทึกที่ซับซ้อน
สำหรับคำถามที่คุณสามารถติดต่อฉันได้ที่ wegpage ของฉันและเขียนอีเมลถึงฉันที่นั่น
โครงการนี้กลับมามีชีวิตอีกครั้งหลังจากถูกทอดทิ้งสองปี ในอีกไม่กี่สัปดาห์ข้างหน้าฉันจะใช้เวลาสักครู่เพื่ออัปเดตฟังก์ชั่นทั้งหมดไปสู่การพัฒนาล่าสุด สิ่งนี้ครอบคลุมการอัปเดต regexes ทั้งหมดและการเปลี่ยนแปลงพฤติกรรมของเครื่องมือค้นหา หลังจากสองสามสัปดาห์คุณสามารถคาดหวังว่าโครงการนี้จะทำงานอีกครั้งตามที่บันทึกไว้ที่นี่
Googlescraper เขียนด้วย Python 3 คุณควรติดตั้งอย่างน้อย Python 3.6 การพัฒนาที่สำคัญครั้งสุดท้ายเกิดขึ้นกับ Python 3.7 ดังนั้นเมื่อใช้ Ubuntu 16.04 และ Python 3.7 โปรดติดตั้ง Python 3 จากแพ็คเกจอย่างเป็นทางการ ฉันใช้การกระจายของ Anaconda Python ซึ่งทำงานได้ดีมากสำหรับฉัน
นอกจากนี้คุณต้องติดตั้งเบราว์เซอร์ Chrome และ Chromedriver สำหรับโหมดซีลีเนียม อีกทางเลือกหนึ่งติดตั้งเบราว์เซอร์ Firefox และ Geckodriver สำหรับโหมดซีลีเนียม ดูคำแนะนำด้านล่าง
นอกจากนี้คุณยังสามารถติดตั้ง googlescraper ได้อย่างสะดวกสบายด้วย PIP:
virtualenv --python python3 env
source env/bin/activate
pip install GoogleScraper
ตอนนี้ (กันยายน 2561) นี่คือสิ่งที่ทำให้หมดกำลังใจ โปรดติดตั้งจากแหล่ง GitHub ล่าสุด
บางครั้งสิ่งใหม่ล่าสุดและยอดเยี่ยมที่สุดไม่ได้มีอยู่ใน Cheeseshop (นั่นคือวิธีที่พวกเขาเรียกว่า https://pypi.python.org/pypi/pip) ดังนั้นคุณอาจต้องการติดตั้ง googlescraper จากแหล่งข้อมูลล่าสุดที่อยู่ในที่เก็บ GitHub นี้ คุณสามารถทำได้เช่นนี้:
virtualenv --python python3 env
source env/bin/activate
pip install git+git://github.com/NikolaiT/GoogleScraper/
โปรดทราบว่าคุณสมบัติและตัวอย่างบางอย่างอาจไม่ทำงานตามที่คาดไว้ ฉันยังไม่รับประกันว่าแอพจะทำงาน ฉันรับประกันได้เฉพาะ (อย่างน้อยในระดับหนึ่ง) ที่การติดตั้งจาก PIP จะให้รุ่นที่ใช้งานได้
ดาวน์โหลด Chromedriver ล่าสุดจากที่นี่: https://sites.google.com/a/chromium.org/chromedriver/downloads
คลายซิปไดรเวอร์และบันทึกไว้ที่ไหนสักแห่งจากนั้นอัปเดต chromedriver_path ในไฟล์กำหนดค่า googlescraper scrape_config.py ไปยังเส้นทางที่คุณบันทึกไดรเวอร์ chromedriver_path = 'Drivers/chromedriver'
ดาวน์โหลด geckodriver ล่าสุดจากที่นี่: https://github.com/mozilla/geckodriver/releases
คลายซิปไดรเวอร์และบันทึกไว้ที่ไหนสักแห่งจากนั้นอัปเดต geckodriver_path ในไฟล์การกำหนดค่า googlescraper scrape_config.py ไปยังเส้นทางที่คุณบันทึกไดรเวอร์ geckodriver_path = 'Drivers/geckodriver'
อัปเดตการตั้งค่าต่อไปนี้ในไฟล์การกำหนดค่า googlescraper scrape_config.py เป็นค่าของคุณ
# chrome driver executable path
# get chrome drivers here: https://chromedriver.storage.googleapis.com/index.html?path=2.41/
chromedriver_path = 'Drivers/chromedriver'
# geckodriver executable path
# get gecko drivers here: https://github.com/mozilla/geckodriver/releases
geckodriver_path = 'Drivers/geckodriver'
# path to firefox binary
firefox_binary_path = '/home/nikolai/firefox/firefox'
# path to chromium browser binary
chrome_binary_path = '/usr/bin/chromium-browser'
ติดตั้งตามที่อธิบายไว้ข้างต้น ตรวจสอบให้แน่ใจว่าคุณมีไดรเวอร์ซีลีเนียมสำหรับ Chrome/Firefox หากคุณต้องการใช้ googlescraper ในโหมดซีลีเนียม
ดูตัวเลือกทั้งหมด
GoogleScraper -h
ขูดคำหลักเดียว "Apple" ด้วยโหมด HTTP:
GoogleScraper -m http --keyword "apple" -v info
ขูดคำหลักทั้งหมดที่อยู่ในไฟล์ SearchData/5words ในโหมดซีลีเนียมโดยใช้ Chrome ในโหมดหัวขาด:
GoogleScraper -m selenium --sel-browser chrome --browser-mode headless --keyword-file SearchData/5words -v info
ขูดคำหลักทั้งหมดที่อยู่ใน
GoogleScraper -m http --keyword-file SearchData/some_words.txt --num-workers 5 --search-engines "bing,yahoo" --output-filename threaded-results.json -v debug
ค้นหารูปภาพสำหรับคำหลัก "K2 Mountain" บน Google:
GoogleScraper -s "google" -q "K2 mountain" -t image -v info
นี่อาจเป็นคุณสมบัติที่ยอดเยี่ยมที่สุดของ Googlescraper คุณสามารถขูดด้วยคำขอหลายพันครั้งต่อวินาทีถ้าอย่างใดอย่างหนึ่ง
ตัวอย่างสำหรับโหมดอะซิงโครนัส:
ค้นหาคำหลักในไฟล์คีย์เวิร์ด SearchData/Mountion-models-brands.txt บน Bing และ Yahoo โดยค่าเริ่มต้นโหมดอะซิงโครนัสวางไข่ 100 คำขอในเวลาเดียวกัน ซึ่งหมายความว่าประมาณ 100 คำขอต่อวินาที (ขึ้นอยู่กับการเชื่อมต่อจริง ... )
GoogleScraper -s "bing,yahoo" --keyword-file SearchData/marketing-models-brands.txt -m http-async -v info -o marketing.json
ผลลัพธ์ (ผลลัพธ์บางส่วนเนื่องจากมีคำหลักมากเกินไปสำหรับที่อยู่ IP เดียว) สามารถตรวจสอบได้ในเอาต์พุตไฟล์/การตลาด json
Googlescraper มีความซับซ้อนอย่างมหาศาล เนื่องจาก Googlescraper รองรับเครื่องมือค้นหาจำนวนมากและ HTML และ JavaScript ของผู้ให้บริการค้นหาเหล่านั้นมีการเปลี่ยนแปลงบ่อยครั้งจึงเป็นกรณีที่ googlescraper สิ้นสุดการทำงานสำหรับเครื่องมือค้นหาบางตัว หากต้องการดูสิ่งนี้คุณสามารถเรียกใช้ การทดสอบการทำงาน
ตัวอย่างเช่นการทดสอบด้านล่างเรียกใช้เซสชันการขูดสำหรับ Google และ Bing และทดสอบว่าข้อมูลที่รวบรวมนั้นดูไม่มากก็น้อย
python -m pytest Tests/functional_tests.py::GoogleScraperMinimalFunctionalTestCase
Googlescraper แยกวิเคราะห์ผลการค้นหาของ Google (และเครื่องมือค้นหาอื่น ๆ อีกมากมาย _ ) ได้อย่างง่ายดายและอย่างรวดเร็ว ช่วยให้คุณสามารถแยกลิงก์ที่พบทั้งหมดและชื่อและคำอธิบายของพวกเขาโดยทางโปรแกรมซึ่งช่วยให้คุณสามารถประมวลผลข้อมูลที่คัดลอกมาได้เพิ่มเติม
มี สถานการณ์การใช้งาน ไม่ จำกัด :
ก่อนอื่นคุณต้องเข้าใจว่า googlescraper ใช้ วิธีการขูดที่แตกต่างกันสองวิธี :
urllib.request หรือ requests โมดูล สิ่งนี้จำลองแพ็คเก็ต HTTP ที่ส่งโดยเบราว์เซอร์จริงในขณะที่วิธีการในอดีตถูกนำไปใช้ก่อนวิธีการในภายหลังนั้นดูมีแนวโน้มมากขึ้นในการเปรียบเทียบเนื่องจากเครื่องมือค้นหาไม่มีวิธีที่ง่ายในการตรวจจับ
Googlescraper ถูกนำไปใช้กับเทคนิค/ซอฟต์แวร์ต่อไปนี้:
ขณะนี้รองรับเครื่องมือค้นหาต่อไปนี้:
การขูดเป็นเรื่องที่สำคัญและมีความซับซ้อนสูง Google และยักษ์ใหญ่เสิร์ชเอ็นจิ้นอื่น ๆ มีความโน้มเอียงที่จะทำให้นักฆ่ามีชีวิตอย่างหนักที่สุดเท่าที่จะทำได้ มีหลายวิธีที่ผู้ให้บริการเครื่องมือค้นหาจะตรวจพบว่าหุ่นยนต์ใช้เครื่องมือค้นหาของพวกเขา:
ดังนั้นสิ่งกีดขวางที่ใหญ่ที่สุดในการจัดการคืออัลกอริทึมการตรวจจับ JavaScript ฉันไม่รู้ว่า Google ทำอะไรใน JavaScript ของพวกเขา แต่ในไม่ช้าฉันจะตรวจสอบมันต่อไปแล้วตัดสินใจว่ามันไม่ดีกว่าที่จะเปลี่ยนกลยุทธ์และเปลี่ยนไปใช้ วิธีการที่ขูดโดยการจำลองเบราว์เซอร์ในสภาพแวดล้อมที่เหมือนเบราว์เซอร์ ที่สามารถดำเนินการ JavaScript ได้ เครือข่ายของเบราว์เซอร์เสมือนจริงเหล่านี้แต่ละตัวนั้นได้รับการจัดสรรและจัดการเพื่อให้เป็นเหมือนตัวแทนผู้ใช้ทางกายภาพจริง ฉันค่อนข้างแน่ใจว่ามันจะต้องเป็นไปได้ที่จะจัดการกับเบราว์เซอร์ 20 ครั้งในแบบคู่ขนานโดยไม่ต้องเน้นทรัพยากรมากเกินไป ปัญหาที่แท้จริงคือการขาดพร็อกซีที่ดี ...
ดังที่ได้กล่าวมาแล้วมีข้อเสียหลายประการเมื่อขูดด้วย urllib.request หรือ requests โมดูลและทำเครือข่ายด้วยตัวเอง:
เบราว์เซอร์เป็นระบบซอฟต์แวร์ที่ซับซ้อนอย่างมาก Chrome มีรหัสประมาณ 8 ล้านบรรทัดและ Firefox แม้กระทั่ง 10 loc บริษัท ขนาดใหญ่ลงทุนเงินจำนวนมากเพื่อผลักดันเทคโนโลยีไปข้างหน้า (HTML5, CSS3, มาตรฐานใหม่) และแต่ละเบราว์เซอร์มีพฤติกรรมที่ไม่เหมือนใคร ดังนั้นแทบจะเป็นไปไม่ได้เลยที่จะจำลองเบราว์เซอร์ด้วยตนเองด้วยคำขอ HTTP ซึ่งหมายความว่า Google มีหลายวิธีในการตรวจจับความผิดปกติและความไม่สอดคล้องกันในการใช้งานการเรียกดู เพียงอย่างเดียวธรรมชาติแบบไดนามิกของ JavaScript ทำให้ไม่สามารถตรวจจับได้
สิ่งนี้ร้องสำหรับวิธีการอื่นที่ทำให้เบราว์เซอร์ จริง กับ Python โดยอัตโนมัติ ที่ดีที่สุดคือการควบคุมเบราว์เซอร์ Chrome เนื่องจาก Google มีแรงจูงใจน้อยที่สุดในการจำกัดความสามารถสำหรับเบราว์เซอร์พื้นเมืองของพวกเขาเอง ดังนั้นฉันจึงต้องการวิธีการทำให้โครเมี่ยมโดยอัตโนมัติด้วย Python และควบคุมอินสแตนซ์อิสระหลายอย่างด้วยชุดพร็อกซีที่แตกต่างกัน จากนั้นผลลัพธ์ของผลลัพธ์จะเพิ่มขึ้นเป็นเส้นตรงตามจำนวนพร็อกซีที่ใช้ ...
เทคโนโลยี/ซอฟต์แวร์ที่น่าสนใจบางอย่างที่ต้องทำ:
อาจเป็นวิธีที่ดีที่สุดในการใช้ googlescraper คือการใช้มันจากบรรทัดคำสั่งและยิงคำสั่งเช่นต่อไปนี้:
GoogleScraper --keyword-file /tmp/keywords --search-engine bing --num-pages-for-keyword 3 --scrape-method selenium
ที่นี่ SEL ทำเครื่องหมายโหมดการขูดเป็น 'ซีลีเนียม' ซึ่งหมายความว่า googlescraper.py scrapes กับเบราว์เซอร์จริง นี่เป็นสิ่งที่ค่อนข้างทรงพลังเนื่องจากคุณสามารถขูดยาวและมีเว็บไซต์จำนวนมาก (Google มีเวลาที่ยากลำบากในการปิดกั้นเบราว์เซอร์จริง) อาร์กิวเมนต์ของธง --keyword-file ต้องเป็นไฟล์ที่มีคำหลักคั่นด้วย newLines ดังนั้น: สำหรับทุก ๆ Google Query หนึ่งบรรทัด ง่ายไม่ใช่ 'มันเหรอ?
นอกจากนี้ตัวเลือก --num-pages-for-keyword หมายความว่า googlescraper จะดึง 3 หน้าติดต่อกันสำหรับแต่ละคำหลัก
ตัวอย่างคำหลักไฟล์:
keyword number one
how to become a good rapper
inurl:"index.php?sl=43"
filetype:.cfg
allintext:"You have a Mysql Error in your"
intitle:"admin config"
Best brothels in atlanta
หลังจากการขูดคุณจะมีฐานข้อมูล SQLITE3 ใหม่โดยอัตโนมัติใน google_scraper.db ที่มีชื่ออยู่ในไดเรกทอรีเดียวกัน คุณสามารถเปิดและตรวจสอบฐานข้อมูลด้วยคำสั่ง:
GoogleScraper --shell
ไม่ควรเป็นปัญหาในการขูด คำหลัก 10'000 ใน 2 ชั่วโมง หากคุณบ้าจริงๆให้ตั้งเบราว์เซอร์สูงสุดในการกำหนดค่าที่สูงขึ้นเล็กน้อย (ที่ด้านบนของไฟล์สคริปต์)
หากคุณต้องการคุณสามารถระบุธง --proxy-file ซี ในฐานะที่เป็นอาร์กิวเมนต์คุณต้องผ่านไฟล์ที่มีพร็อกซีในนั้นและด้วยรูปแบบต่อไปนี้:
protocol proxyhost:proxyport username:password
(...)
ตัวอย่าง:
socks5 127.0.0.1:1080 blabla:12345
socks4 77.66.55.44:9999 elite:js@fkVA3(Va3)
ในกรณีที่คุณต้องการใช้ googlescraper.py ในโหมด HTTP (ซึ่งหมายความว่าจะส่งส่วนหัว HTTP ดิบ) ให้ใช้ดังนี้:
GoogleScraper -m http -p 1 -n 25 -q "white light"
หากคุณรู้สึกอยากติดต่อฉันทำและส่งจดหมายถึงฉัน คุณสามารถค้นหาข้อมูลการติดต่อของฉันในบล็อกของฉัน