买房前奏:使用Selenium爬取贝壳房源 您所在的位置:网站首页 贝壳找房使用教程 买房前奏:使用Selenium爬取贝壳房源

买房前奏:使用Selenium爬取贝壳房源

2023-10-21 08:48| 来源: 网络整理| 查看: 265

之前小编使用requests爬取过LOL英雄图片,涂鸦过一篇《使用requests爬取LOL英雄图片》,小编提到过,英雄图片是动态加载的,动态加载就是通过页面js向服务器发起请求,所以需要在浏览器F12中找到目标js文件,然后发起请求。

Selenium是一个自动化测试工具,支持各种主流浏览器,有了它可以轻松模拟浏览器操作,然后获取加载完成后的页面,就可以忽略动态加载了。得到加载完成的页面,交给bs4即可。

安装Selenium。

pip3 install selenium

下载浏览器驱动,以chrome为例。

http://npm.taobao.org/mirrors/chromedriver/

今天我们就不爬取游戏图片了,玩物丧志。小编用Selenium模拟浏览器获取一页(only one page)贝壳房源在售信息,学习的同时让自己清醒一下。

爬取贝壳房源信息,需要首先观察一下页面元素,仍然需要通过F12找到目标元素,因为我们要触发页面事件,如填充输入框,单击按钮等操作。这里我们模拟浏览器,在下图输入框中输入关键字,然后点击搜索按钮。

driver = webdriver.Chrome(executable_path="G:/chromedriver.exe") driver.maximize_window() driver.get("https://bj.ke.com/") driver.find_element_by_name("keyword").send_keys("7号线") driver.find_element_by_id("findHouse").click() time.sleep(3) page_source = driver.page_source driver.quit()

Selenium使用起来非常简单,1~3行创建浏览器驱动并向目标url发起请求;4~5向输入框搜索关键字并点击查询,这里小编搜索'7号线';接着得到模拟浏览器返回的页面数据并退出即可。

有了浏览器加载完成的页面,就可以使用bs4解析了,bs4支持各种解析html元素,可以轻而易举获取需要的元素及对应的值。

bs4 = BeautifulSoup(page, 'lxml') lists = bs4.select(".sellListContent")[0].find_all("li", "clear") room = dict() for item in lists: room['小区'] = item.select_one('.positionInfo > a').getText() room['总价'] = re.sub(r'\s*', '', item.select_one('.totalPrice span').getText()) room['单价'] = item.select_one('.unitPrice > span').getText() room['详细'] = re.sub(r'\s*', '', item.select_one('.houseInfo').getText()) print(room)

本文只完成了抽取和转换的过程,直接打印输出了,没有进行保存,通常将数据输出到数据库或excel文件,有关保存excel操作可以参见小编另一篇涂鸦《爬取计算机书籍畅销排行榜》。

最后看下爬取结果,看到这个房价结果,刚才还有点犯困的小编立即清醒了许多。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有