2016-04-09 10 views
0

Python öğrenmesinde yeni birer merhaba. Satış elemanı çok seyahat ediyor, otel rezervasyonunda biraz para biriktirmek istiyor, bu yüzden kişisel kullanım için belirli günlerde belirli otelleri kazımak için python kullanıyorum.Python, belirli URL değiştirme kuralları dikkate alınarak günlük olarak nasıl otomatik kazıma yapabilir?

Belirli bir web sayfasını kazımak için python kullanabilirim, ancak seri aramada sorun yaşıyorum.

tek web sayfası kazıma şöyledir:

import requests 
from bs4 import BeautifulSoup 
url ="http://hotelname.com/arrivalDate=05%2F23%2F2016**&departureDate=05%2F24%2F2016" #means arrive on May23 and leaves on May 
wb_data = requests.get(url) 
soup = BeautifulSoup(wb_data.text,'lxml') 
names = soup.select('.PropertyName') 
prices = soup.select('.RateSection ') 
for name,price in zip(names,prices): 

data = { 
    "name":name.get_text(), 
    "price":price.get_text() 
} 
print (data) 

bu ben o gün otel fiyat alabilirsiniz yaparak. Ama fiyatı daha uzun bir süre (15 gün) bilmek istiyorum, bu yüzden seyahatimi ayarlayabilir ve biraz para biriktirebilirim. Soru, arama otomatik döngüsünü kendim nasıl yapabilirim? Örn.,

örn. hotelName ('') fiyatı (CI) ve 2 Mayıs check-out (CO)

hotelName içinde (200USD) 1 Mayıs Kontrol ('') fiyatı (150USD) 2 Mayıs CI 3 Mayıs CO

... .......

hotelName ('') fiyatı (170USD) May30 CI 31 Mayıs CO

Umut benim niyetleri açıkça belirtilmektedir. Birisi bu otomatik aramaya ulaşmak için ne yapmalıyım? URL'lerde tarihi elle değiştirmek için çok fazla iş var. Teşekkür

cevap

0

Sen tarihleri ​​almak için datetime lib kullanın ve n gün boyunca döngü içinde bir anda günde artırmak:

import requests 
from bs4 import BeautifulSoup 

from datetime import datetime, timedelta 

def n_booking(n): 
    # start tomorrow 
    bk = (datetime.now() + timedelta(days=1)) 
    # check next n days 
    for i in range(n): 
     mon, day, year = bk.month, bk.day, bk.year 
     # go to next day 
     bk = (datetime.now() + timedelta(days=1)) 
     d_mon, d_day, d_year = bk.month, bk.day, bk.year 
     url ="http://hotelname.com/arrivalDate=d{mon}%2F{day}%2F{year}**&departureDate={d_mon}%2F{d_day}%2F{d_year}"\ 
      .format(mon=mon, day=day, year=year, d_day=d_day, d_mon=d_mon,d_year=d_year) 
     wb_data = requests.get(url) 
     soup = BeautifulSoup(wb_data.text,'lxml') 
     names = soup.select('.PropertyName') 
     prices = soup.select('.RateSection ') 
     for name,price in zip(names,prices): 

      yield { 
       "name":name.get_text(), 
       "price":price.get_text() 
       } 
İlgili konular