iT邦幫忙

2023 iThome 鐵人賽

DAY 19
0
Software Development

30天來打造一個方便的訂房機器人系列 第 19

[Day 19]收入囊中,為己所用 #4

  • 分享至 

  • xImage
  •  

今天會將我們昨天新學的爬取片運用到我們現在的程式上

先取得各個飯店的鏈結

link_list = [] #存放各個飯店鏈結

all_titles = soup.find_all("div",attrs={"data-testid":"title"})取得所有飯店的名稱

for i in range(5):
    ...
    link = hotels[i].find(attrs={"data-testid" : "title-link"})
    link_list.append(link.get('href'))

再將之前存取的鏈結一個個拿出來用

driver.set_window_size(10000,30000) 
link_count = 0 #用來計數link_list


for title in all_titles:
    url = link_list[link_count]
    driver.get(url)

    close = driver.find_element(By.CSS_SELECTOR, 'a[class="bh-photo-grid-item bh-photo-grid-side-photo active-image "]')
    close.click()
    source = driver.page_source
    soup = BeautifulSoup(source, "lxml")
    body = soup.find("body")
    imgs = body.find_all("img", {"class": "bh-photo-modal-grid-image"}, limit=10)
    
    
    image_links = [img.get("src") for img in imgs]  # 取得圖片來源連結
    image_tags = [img.get("alt") for img in imgs]  # 取得圖片名稱
    
    
    for index, link in enumerate(image_links):
        if not os.path.exists("images"):
            os.mkdir("images")  # 建立資料夾
            
            
        if not os.path.exists("images\\"+title.text):
            os.mkdir("images\\"+title.text) #建立每個不同飯店的圖片
            
            
        img = requests.get(link)  # 下載圖片
        with open("images\\" + title.text +'\\' + image_tags[index] + str(index) + ".jpg", "wb") as file:  # 開啟資料夾及命名圖片檔
            file.write(img.content)  # 寫入圖片的二進位碼
    
    link_count+=1 #啟用下一個飯店鏈結

好拉那我們這邊就完成了我們主程式的又一個功能了,終於我們要在最後十天開始介紹我們要使用的booking bot啦~~


上一篇
[Day 18]躲到哪我都把你揪出來
下一篇
[Day 20]機器人計畫,啟動~
系列文
30天來打造一個方便的訂房機器人30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言