python+selenium爬虫小项目(爱彼迎深圳房源信息爬取)

匿名 (未验证) 提交于 2019-12-02 22:51:08
版权声明:本文为博主原创文章,转载请注明出处! https://blog.csdn.net/lws123253/article/details/90902133

这是房源的地址:

第1页:https://www.airbnb.cn/s/Shenzhen--China/homes?refinement_paths%5B%5D=%2Fhomes&place_id=ChIJkVLh0Aj0AzQRyYCStw1V7v0&query=Shenzhen%2C%20China&allow_override%5B%5D=&s_tag=vaSZFain

第3页:https://www.airbnb.cn/s/Shenzhen--China/homes?refinement_paths%5B%5D=%2Fhomes&place_id=ChIJkVLh0Aj0AzQRyYCStw1V7v0&query=Shenzhen%2C%20China&allow_override%5B%5D=&s_tag=vaSZFain&section_offset=6&items_offset=18

第3页:https://www.airbnb.cn/s/Shenzhen--China/homes?refinement_paths%5B%5D=%2Fhomes&place_id=ChIJkVLh0Aj0AzQRyYCStw1V7v0&query=Shenzhen%2C%20China&allow_override%5B%5D=&s_tag=vaSZFain&section_offset=6&items_offset=36

......

第17页(最后一页):https://www.airbnb.cn/s/Shenzhen--China/homes?refinement_paths%5B%5D=%2Fhomes&place_id=ChIJkVLh0Aj0AzQRyYCStw1V7v0&query=Shenzhen%2C%20China&allow_override%5B%5D=&s_tag=vaSZFain&section_offset=6&items_offset=288

检查元素:

网页第一部分:

第二部分:

第三部分:

第四部分:

主体部分就是这四部分了,但是我们发现,包含房源信息的主要在第二部分和第四部分,也就是<div class="_uvp3p0">这里面,并且每一个房源信息都在<div class="_14csrlku">,但是第一页第二部分有12个房源信息,第四部分有6个房源信息,被分开了。这是第一页的情况。

<div class="_uvp3p0">,并且在第二页只有一块主题用于放置房源信息,并且第二页房源信息为18个,都在<div class="_14csrlku">

好了,我们现在可以初步断定,我们需要的所有信息都包含在这个块中,接下来我们在这个模块中搜寻信息。

 #_*_ coding=UTF-8 _*_ import requests from selenium import webdriver  options = webdriver.ChromeOptions() options.add_argument('user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36"') driver = webdriver.Chrome(chrome_options = options)  #第1页第二部分: #site-content > div > div > div._1kss53yu > div > div > section > div > div > div:nth-child(2) > div > div > div:nth-child(2) > div > div > div > div > div > div:nth-child(3) #site-content > div > div > div._1kss53yu > div > div > section > div > div > div:nth-child(2) > div > div > div:nth-child(2) > div > div > div > div > div > div:nth-child(1) #第1页第四部分 #site-content > div > div > div._1kss53yu > div > div > section > div > div > div:nth-child(4) > div > div > div:nth-child(2) > div > div > div > div > div > div:nth-child(6) #第一页和其它页的selector不通用,除第一页外剩余页均通用  #第4页第17条信息 #site-content > div > div > div._1kss53yu > div > div > section > div > div > div > div > div > div:nth-child(2) > div > div > div > div > div > div:nth-child(17) #第5页第15条信息 #site-content > div > div > div._1kss53yu > div > div > section > div > div > div > div > div > div:nth-child(2) > div > div > div > div > div > div:nth-child(15) #site-content > div > div > div._1kss53yu > div > div > section > div > div > div > div > div > div:nth-child(2) > div > div > div > div > div > div:nth-child(17)  #第一页第二部分 driver.get("https://www.airbnb.cn/s/Shenzhen--China/homes?refinement_paths%5B%5D=%2Fhomes&place_id=ChIJkVLh0Aj0AzQRyYCStw1V7v0&query=Shenzhen%2C%20China&allow_override%5B%5D=&s_tag=vaSZFain") for num in range(1,13):     info=driver.find_element_by_css_selector('#site-content > div > div > div._1kss53yu > div > div > section > div > div > div:nth-child(2) > div > div > div:nth-child(2) > div > div > div > div > div > div:nth-child('+str(num)+')')#可通过浏览器检查元素,copy->copyselector获取。      sty=info.find_element_by_css_selector('span._fk7kh10')#样式     #st=info.find_element_by_class_name('_fk7kh10')     name=info.find_element_by_css_selector('div._dadnbjj')#name     comment=info.find_element_by_css_selector('span._69pvqtq')#评论     price=info.find_element_by_css_selector('span._j1kt73')#价格     print("样式:"+sty.text)     print("名字:"+name.text)     print("评论数:"+comment.text)     print("价格:"+price.text)     #print(info.text)  #第一页第四部分 #driver.get("https://www.airbnb.cn/s/Shenzhen--China/homes?refinement_paths%5B%5D=%2Fhomes&place_id=ChIJkVLh0Aj0AzQRyYCStw1V7v0&query=Shenzhen%2C%20China&allow_override%5B%5D=&s_tag=vaSZFain") for num in range(1,7):     info=driver.find_element_by_css_selector('#site-content > div > div > div._1kss53yu > div > div > section > div > div > div:nth-child(4) > div > div > div:nth-child(2) > div > div > div > div > div > div:nth-child('+str(num)+')')#可通过浏览器检查元素,copy->copyselector获取。      sty=info.find_element_by_css_selector('span._fk7kh10')#样式     #st=info.find_element_by_class_name('_fk7kh10')     name=info.find_element_by_css_selector('div._dadnbjj')#name     comment=info.find_element_by_css_selector('span._69pvqtq')#评论     price=info.find_element_by_css_selector('span._j1kt73')#价格     print("样式:"+sty.text)     print("名字:"+name.text)     print("评论数:"+comment.text)     print("价格:"+price.text)      #其它页面 #https://www.airbnb.cn/s/Shenzhen--China/homes?refinement_paths%5B%5D=%2Fhomes&place_id=ChIJkVLh0Aj0AzQRyYCStw1V7v0&query=Shenzhen%2C%20China&allow_override%5B%5D=&s_tag=vaSZFain&section_offset=6&items_offset=18#第二页 #https://www.airbnb.cn/s/Shenzhen--China/homes?refinement_paths%5B%5D=%2Fhomes&place_id=ChIJkVLh0Aj0AzQRyYCStw1V7v0&query=Shenzhen%2C%20China&allow_override%5B%5D=&s_tag=vaSZFain&section_offset=6&items_offset=36#第三页 #https://www.airbnb.cn/s/Shenzhen--China/homes?refinement_paths%5B%5D=%2Fhomes&place_id=ChIJkVLh0Aj0AzQRyYCStw1V7v0&query=Shenzhen%2C%20China&allow_override%5B%5D=&s_tag=vaSZFain&section_offset=6&items_offset=54#第四页 for i in range(2,18):     url="https://www.airbnb.cn/s/Shenzhen--China/homes?refinement_paths%5B%5D=%2Fhomes&place_id=ChIJkVLh0Aj0AzQRyYCStw1V7v0&query=Shenzhen%2C%20China&allow_override%5B%5D=&s_tag=vaSZFain&section_offset=6&items_offset="+str(18*(i-1))     driver.get(url)     for num in range(1,19):         info=driver.find_element_by_css_selector('#site-content > div > div > div._1kss53yu > div > div > section > div > div > div > div > div > div:nth-child(2) > div > div > div > div > div > div:nth-child('+str(num)+')')#可通过浏览器检查元素,copy->copyselector获取。          sty=info.find_element_by_css_selector('span._fk7kh10')#样式         #st=info.find_element_by_class_name('_fk7kh10')         name=info.find_element_by_css_selector('div._dadnbjj')#name         comment=info.find_element_by_css_selector('span._69pvqtq')#评论         price=info.find_element_by_css_selector('span._j1kt73')#价格         print("样式:"+sty.text)         print("名字:"+name.text)         print("评论数:"+comment.text)         print("价格:"+price.text) driver.quit() 

文章来源: https://blog.csdn.net/lws123253/article/details/90902133
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!