Tutorial sa Scrapy: Paano Gumawa ng Isang Web-Crawler Gamit ang Scrapy?



Sa artikulong ito ng Scrapy Tutorial, matututunan mong gumawa ng isang web-crawler na may iba't ibang mga diskarte sa pagkuha ng data at mga paraan upang maiimbak ang data sa isang database.

Ang web scraping ay isang mabisang paraan ng pangangalap ng data mula sa mga webpage, ito ay naging isang mabisang tool sa . Sa iba`t ibang aklatan naroroon para sa pag-scrap ng web tulad ng , ang gawain ng isang siyentista ng data ay naging pinakamainam. Ang scrapy ay isang malakas na balangkas sa web na ginagamit para sa pagkuha, pagproseso at pag-iimbak ng data. Malalaman natin kung paano kami makakagawa ng isang web crawler sa malademonyong tutorial na ito, sumusunod ang mga paksang tinalakay sa blog na ito:

Ano ang Scrapy?

Ang scrapy ay isang libre at open-source na balangkas sa pag-crawl ng web na nakasulat sa sawa. Orihinal na ito ay idinisenyo upang gumanap , ngunit maaari ding gamitin para sa pagkuha ng data gamit ang mga API. Ito ay pinananatili ng Scrapinghub ltd.





Ang scrapy ay isang kumpletong pakete pagdating sa pag-download ng mga webpage, pagproseso at pag-iimbak ng data sa .

Ito ay tulad ng isang powerhouse pagdating sa pag-scrap ng web na may maraming mga paraan upang mag-scrape ng isang website. Hinahawakan ng scrapy ang mas malalaking gawain nang madali, pag-scrap ng maraming mga pahina o isang pangkat ng mga URL nang mas mababa sa isang minuto. Gumagamit ito ng twister na gumagana asynchronous upang makamit ang pagsabay.



Nagbibigay ito ng mga kontrata ng spider na nagbibigay-daan sa amin upang lumikha ng generic pati na rin ang mga deep crawler. Nagbibigay din ang Scrapy ng mga pipeline ng item upang lumikha ng mga pag-andar sa isang spider na maaaring magsagawa ng iba't ibang mga operasyon tulad ng pagpapalit ng mga halaga sa data atbp.

malademonyong arkitektura-makulit na tutorial-edureka

Ano ang Isang Web-Crawler?

Ang isang web-crawler ay isang programa na awtomatikong naghahanap ng mga dokumento sa web. Pangunahin silang nai-program para sa paulit-ulit na pagkilos para sa awtomatikong pag-browse.

Paano ito gumagana



Ang isang web-crawler ay halos kapareho ng isang librarian. Hinahanap nito ang impormasyon sa web, ikinategorya ang impormasyon at pagkatapos ay nai-index at na-catalog ang impormasyon para sa na-crawl na impormasyon na makuha at maiimbak nang naaayon.

Ang mga pagpapatakbo na isasagawa ng crawler ay nilikha muna, pagkatapos ay awtomatikong isinasagawa ng crawler ang lahat ng mga pagpapatakbo na lilikha ng isang index. Ang mga index na ito ay maaaring ma-access ng isang output software.

Tingnan natin ang iba't ibang mga application na maaaring magamit para sa isang web-crawler:

  • Ang mga portal ng paghahambing ng presyo ay naghahanap ng mga tukoy na detalye ng produkto upang makagawa ng paghahambing ng mga presyo sa iba't ibang mga platform gamit ang isang web-crawler.

  • Ang isang web-crawler ay gampanan ang isang napakahalagang papel sa larangan ng data mining para sa pagkuha ng impormasyon.

  • Ang mga tool sa pagtatasa ng data ay gumagamit ng mga web-crawler upang makalkula ang data para sa mga view ng pahina, papasok at papasok na mga link din.

  • Naghahatid din ang mga crawler sa mga hub ng impormasyon upang mangolekta ng data tulad ng mga portal ng balita.

Paano Mag-install ng Scrapy?

Upang mai-install ang scrapy sa iyong system, inirerekumenda na i-install ito sa isang nakatuong virtualenv. Ang pag-install ay gumagana nang katulad sa anumang iba pang mga pakete sa sawa, kung gumagamit ka conda kapaligiran, gamitin ang sumusunod na utos upang mag-install ng scrapy:

pag-install ng conda -c conda-forge na makinis

maaari mo ring gamitin ang kapaligiran sa pip upang mai-install na makalat,

pip install malimot

Maaaring mayroong ilang mga dependency sa pagtitipon depende sa iyong operating system. Ang scrapy ay nakasulat sa purong sawa at maaaring nakasalalay sa ilang mga pakete sawa tulad ng:

  • lxml - Ito ay isang mahusay na XML at HTML parser.

  • parcel - Isang aklatan ng pagkuha ng HTML / XML na nakasulat sa itaas sa lxml

  • W3lib - Ito ay isang multi-purpose helper para sa pagharap sa mga URL at pag-encode ng webpage

  • baluktot - Isang hindi magkasabay na balangkas ng networking

    pagsamahin ang uri ng programa sa java
  • cryptography - Nakakatulong ito sa iba't ibang mga pangangailangan sa seguridad sa antas ng network

Simula sa Iyong Unang Project sa Scrapy

Upang simulan ang iyong unang makinis na proyekto, pumunta sa direktoryo o lokasyon kung saan mo nais i-save ang iyong mga file at ipatupad ang sumusunod na utos

makinis na proyekto ng proyekto sa simula

Matapos mong maipatupad ang utos na ito, makakakuha ka ng mga sumusunod na direktoryo na nilikha sa lokasyong iyon.

  • Pangalan ng proyekto/

    pagsubok sa cross browser gamit ang siliniyum
    • scrapy.cfg: inilalagay nito ang file ng pagsasaayos

  • Pangalan ng proyekto/

    • __init__.py: module ng python ng mga proyekto

    • items.py: file ng kahulugan ng mga item ng proyekto

    • middlewares.py: file ng mga middlewares ng proyekto

    • pipelines.py: file ng mga pipelines ng proyekto

    • setting.py: file ng mga setting ng proyekto

  • gagamba /

    • __init__.py: isang direktoryo kung saan malalagay mo ang iyong mga gagamba

Paggawa ng Iyong Unang Spider

Ang mga gagamba ay mga klase na tinutukoy namin at makinis na paggamit upang makakalap ng impormasyon mula sa web. Dapat mong i-subclass ang scrapy. Spider at tukuyin ang paunang mga kahilingan na gagawin.

Isusulat mo ang code para sa iyong spider sa isang hiwalay na file ng sawa at mai-save ito sa direktoryo ng projectname / spider sa iyong proyekto.

quotes_spider.py

i-import ang scrapy class na QuotesSpider (scrapy.Spider): name = 'quotes' def start_request (self): urls = ['http://quotes.toscrape.com/page/1/', http://quotes.toscrape.com / pahina / 2 /,] para sa url sa mga url: ani malas. Humiling (url = url, callback = self.parse) def parse (sarili, tugon): pahina = response.url.split ('/') [- 2 ] filename = 'quotes-% s.html'% na pahina na may bukas (filename, 'wb') bilang f: f.write (response.body) self.log ('nai-save na file% s'% filename)

Tulad ng nakikita mo, tinukoy namin ang iba't ibang mga pag-andar sa aming mga spider,

  • pangalan: Kinikilala nito ang gagamba, dapat itong maging natatangi sa buong proyekto.

  • start_requests (): Dapat ibalik ang isang umuulit na mga kahilingan kung saan magsisimulang gumapang ang gagamba.

  • parse (): Ito ay isang pamamaraan na tatawagin upang hawakan ang tugon na na-download sa bawat kahilingan.

Kinukuha ang Data

Hanggang ngayon ang gagamba ay hindi kumukuha ng anumang data, nai-save lamang ang buong HTML file. Karaniwan na nakakabuo ng maraming dictionaries ang isang scrapy spider na naglalaman ng data na nakuha mula sa pahina. Ginagamit namin ang keyword ng ani sa sawa sa callback upang makuha ang data.

i-import ang scrapy class na QuotesSpider (scrapy.Spider): name = 'quotes' start_urls = [http://quotes.toscrape.com/page/1/ ', http://quotes.toscrape.com/page/2/,] def parse (sarili, tugon): para sa quote bilang response.css ('div.quote'): ani {'text': quote.css (span.text :: text '). get (),' author ': quote .css (maliit.author::text ') kumuha (),' mga tag ': quote.css (div.tags a.tag :: teksto'). getall ()}

Kapag pinatakbo mo ang spider na ito, maglalabas ito ng nakuha ng data gamit ang log.

Pag-iimbak ng Data

Ang pinakasimpleng paraan upang maiimbak ang nakuha na data ay sa pamamagitan ng paggamit ng mga export ng feed, gamitin ang sumusunod na utos upang maiimbak ang iyong data.

makinis na pag-crawl ng mga quote -o mga quote.json

Ang utos na ito ay bubuo ng isang quote.json file na naglalaman ng lahat ng mga naka-scrap na item, na naka-serial in Si JSON .

Dinadala tayo nito sa pagtatapos ng artikulong ito kung saan natutunan namin kung paano kami makakagawa ng isang web-crawler gamit ang scrapy sa python upang mag-scrape ng isang website at i-extract ang data sa isang file na JSON. Inaasahan kong malinaw ka sa lahat ng naibahagi sa iyo sa tutorial na ito.

Kung nahanap mo ang artikulong ito sa 'Scrapy Tutorial' na may kaugnayan, tingnan ang isang pinagkakatiwalaang kumpanya sa online na pag-aaral na may isang network ng higit sa 250,000 nasiyahan na mga nag-aaral na kumalat sa buong mundo.

Narito kami upang matulungan ka sa bawat hakbang sa iyong paglalakbay at magkaroon ng isang kurikulum na idinisenyo para sa mga mag-aaral at propesyonal na nais na maging . Ang kurso ay dinisenyo upang bigyan ka ng isang panimula sa Python program at sanayin ka para sa parehong core at advanced na mga konsepto ng Python kasama ang iba't ibang katulad

Kung mahahanap mo ang anumang mga katanungan, huwag mag-atubiling itanong ang lahat ng iyong mga katanungan sa seksyon ng mga komento ng 'Scrapy Tutorial' at ang aming koponan ay nalulugod na sagutin.