Su an dunyada daha iyisi olmadigini bircok yabanci yayincidan ogrendim. Docker ve splashle inanilmaz isler yapilabiliyor. Birkac gundur kullaniyorum ve cektigim verileri SQLite filan yazdirabiliyorum. Bazen Json olarak kullaniyorum. Kusursuz bir arac. Hatta kurallar girerek kendi kendine istediginiz urlleri tarayip o sayfalardaki tum verileri dahi cekebiliyor. Net bir url girmenize bile gerek yok. Sayfalama kullanmayacaksaniz /product/ linkini tara diyip gecioyrsunuz
Merak ettigim su:
Orumcegimi yaratiyorum kusursuz calisiyor ama
scrapy crawl bocek ismi -O bilgi.json seklinde elle kodlamam gerekiyor!
from scrapy.crawler import CrawlerProcess kutuphanesi yardimiyla
Olusturdugumu class yapisindaki kodu artik kod yazmadan da calistirabiliyoruz.
Ancak ben bu classi loopa bagliyamiyorum. Biraz stackflow arastirdim ama cok fazla bilgi yok.
import scrapy
from scrapy.crawler import CrawlerProcess
class MySpider(scrapy.Spider):
# Your spider definition
...
process = CrawlerProcess(settings={
"FEEDS": {
"items.json": {"format": "json"},
},
})
process.crawl(MySpider)
process.start() # the script will block here until the crawling is finishedMesela ben bu kodu While dongusune nasil alirim.. Bir sitede saat var, onu cekip surekli guncellemek ve json dosyasindan islem yapmak istiyorum diyelim. Hersey iyi guzel taramasi guzel ama otomasyonunu cozemedim
Bir yardimci olursaniz sevinirim.
Su an dunyada daha iyisi olmadigini bircok yabanci yayincidan ogrendim. Docker ve splashle inanilmaz isler yapilabiliyor. Birkac gundur kullaniyorum ve cektigim verileri SQLite filan yazdirabiliyorum. Bazen Json olarak kullaniyorum. Kusursuz bir arac. Hatta kurallar girerek kendi kendine istediginiz urlleri tarayip o sayfalardaki tum verileri dahi cekebiliyor. Net bir url girmenize bile gerek yok. Sayfalama kullanmayacaksaniz /product/ linkini tara diyip gecioyrsunuz
Merak ettigim su:
Orumcegimi yaratiyorum kusursuz calisiyor ama
scrapy crawl bocek ismi -O bilgi.json seklinde elle kodlamam gerekiyor!
from scrapy.crawler import CrawlerProcess kutuphanesi yardimiyla
Olusturdugumu class yapisindaki kodu artik kod yazmadan da calistirabiliyoruz.
Ancak ben bu classi loopa bagliyamiyorum. Biraz stackflow arastirdim ama cok fazla bilgi yok.
import scrapy
from scrapy.crawler import CrawlerProcess
class MySpider(scrapy.Spider):
# Your spider definition
...
process = CrawlerProcess(settings={
"FEEDS": {
"items.json": {"format": "json"},
},
})
process.crawl(MySpider)
process.start() # the script will block here until the crawling is finishedMesela ben bu kodu While dongusune nasil alirim.. Bir sitede saat var, onu cekip surekli guncellemek ve json dosyasindan islem yapmak istiyorum diyelim. Hersey iyi guzel taramasi guzel ama otomasyonunu cozemedim
Bir yardimci olursaniz sevinirim.
Sorunu cozdum hocam su an 3-4 botu ayni anda 1. saniye arayla calistirabiliyorum. Scrapy dokumanini okudum. CrawlerRunner kullaniyorum.
Sizi yakalamisken bir sorum olacak yardimci olursaniz sevinirim. Ciktilari json olarak yazdiriyorum. Hicbir sorun yok. Loop ozelligi olsun bot sayisi olsun sifir sorun.
Sorum su mesela bu bir deger dondurunce Json degilde bir degiskene atamak ve onu bir programda kullanmak istiyorum bunu nasil yaparim?
import scrapy
from scrapy.crawler import CrawlerRunner
class Test2(scrapy.Spider):
name = 'Home'
def start_requests(self):
yield scrapy.Request('https://www.test.com')
def parse(self, response):
for total in response.css('td'):
yield{
'total': total.css('::text').get()
}
runner2 = CrawlerRunner()
runner2.crawl(Test)Mesela bunu bir proje gibi komut satiri olmadan calistirabiliyorum
runner = CrawlerRunner(settings = {
"FEEDS": {
"Home.json": {"format": "json", "overwrite": True},
},
})
istersem jsonda kaydediyorum ama mobil bir uygulama icin burdan donen degeri bir degisken ile baska bir py dosyasinda kullanabilmek icin dondurmem gerekiyor. Bunu nasil yaparim?
runner = CrawlerRunner()
a = runner2.crawl(Test)
print(a)
<Deferred at 0x65cbfb6d0>
Degeri donduremiyorum yani nasil kullanmam gerekir bu yapiyi?
Tesekkur ederim.