このプロジェクトの目的は、深センの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)
結果は似ています: