初心者クローラー(3):Seleniumを使用してブラウザーをシミュレートし、動的なWebページを取得します(2)Seleniumプロジェクトの実際の戦闘-深センの短期レンタルデータ

このプロジェクトの目的は、深センのAirbnbに関する短期賃貸住宅データの最初の5ページを取得することです。
宛先URL:Airbnb深センの短期賃貸データ
ここに画像の説明を挿入

1.WebサイトのHTMLコードタグを分析します

1.Webページの任意の場所を右クリック>チェック

ここに画像の説明を挿入

2.「AllHouseData」に対応するHTMLコードを見つけます

ここに画像の説明を挿入
家のすべてのデータを見つけるためのアドレスは次のとおりです:div.gigle7

3.「住宅価格」に対応するHTMLコードを見つけます

ここに画像の説明を挿入
住宅価格を見つけるための住所は次のとおりです:span.krjbj

4.「家のスコア、家のレビュー」に対応するHTMLコードを見つけます

ここに画像の説明を挿入
家のスコアを見つけます。家のレビュー番号のアドレスは次のとおりです。span._1clmxfj

5.「家の名前」に対応するHTMLコードを見つけます

ここに画像の説明を挿入
家の名前を見つけるためのアドレスは次のとおりです:div._qrfr9x5

6.「家のタイプ、部屋の数」に対応するHTMLコードを見つけます

ここに画像の説明を挿入
家のタイプと部屋の数を見つけるための住所は次のとおりです。span._faldii7

2、クロールコードを書く

1.セレンを使用して、Airbnbの最初のページのデータを取得します

from selenium import webdriver
import time

driver = webdriver.Firefox()
#我已将其配置到环境变量中,若读者没有,请在上面括号中加入你电脑中geckodriver.exe程序的地址
#在虚拟浏览器中打开 Airbnb 页面
driver.get("https://zh.airbnb.com/s/Shenzhen--China/homes")

#找到页面中所有的出租房
rent_list = driver.find_elements_by_css_selector('div.gigle7')

#对于每一个出租房
for eachhouse in rent_list: #使用for循环提取每个出租房的信息
    #找到评论数量
    try:
        comment = eachhouse.find_element_by_css_selector('span._1clmxfj')
        comment = comment.text
    except:
        comment = 0
    
    #找到价格
    price = eachhouse.find_element_by_css_selector('span.krjbj')
    price = price.text.replace("每晚", "").replace("价格", "").replace("\n", "")
    
    #找到名称
    name = eachhouse.find_element_by_css_selector('div._qrfr9x5')
    name = name.text
    
    #找到房屋类型,房间数量
    details = eachhouse.find_element_by_css_selector('span._faldii7')
    details = details.text
    house_type = details.split(" · ")[0]
    bed_number = details.split(" · ")[1]
    print (comment, price, name, house_type, bed_number)

結果は似ています:
ここに画像の説明を挿入

2.最初の5ページのデータを取得します

2ページ目をクリックすると、URLは次のようになります。

リンクの説明を追加

3番目のページをクリックすると、Webページは次のようになります。

リンクの説明を追加

4番目のページをクリックすると、Webページは次のようになります。

リンクの説明を追加

items_offsetのみが20から40、次に60に変更されていることがわかります。forループを介してitems_offsetの値を定期的に変更することによってのみ、ページをめくることができます。

from selenium import webdriver
import time

driver = webdriver.Firefox()
#我已将其配置到环境变量中,若读者没有,请在上面括号中加入你电脑中geckodriver.exe程序的地址
for i in range(0,5):
    link = "https://zh.airbnb.com/s/Shenzhen--China/homes?items_offset=" + str(i *18)
    driver.get(link)
    rent_list = driver.find_elements_by_css_selector('div._gig1e7')

#对于每一个出租房
for eachhouse in rent_list: #使用for循环提取每个出租房的信息
    #找到评论数量
    try:
        comment = eachhouse.find_element_by_css_selector('span._1clmxfj')
        comment = comment.text
    except:
        comment = 0
    
    #找到价格
    price = eachhouse.find_element_by_css_selector('span.krjbj')
    price = price.text.replace("每晚", "").replace("价格", "").replace("\n", "")
    
    #找到名称
    name = eachhouse.find_element_by_css_selector('div._qrfr9x5')
    name = name.text
    
    #找到房屋类型,房间数量
    details = eachhouse.find_element_by_css_selector('span._faldii7')
    details = details.text
    house_type = details.split(" · ")[0]
    bed_number = details.split(" · ")[1]
    print (comment, price, name, house_type, bed_number)

結果は似ています:
ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/qq_45154565/article/details/109763657