Python:爬取airbnb房源信息(Selenium)

Selenium介绍

08ef5128b26ac83ef9308871a00bc6d.png

Selenium是一个用于Web应用程序测试的工具,测试直接在浏览器中运行,就像真实用户所做的一样,目前流行的自动化测试就可以靠它来实现。

而自动化测试还需要用我们的webdriver

WebDriver针对各个浏览器而开发,取代了嵌入到被测Web应用中的JavaScript。与浏览器的紧密集成支持创建更高级的测试,避免了JavaScript安全模型导致的限制。除了来自浏览器厂商的支持,WebDriver还利用操作系统级的调用模拟用户输入。

今天就是利用这两个结合来爬取airbnb的房源信息

首先我们需要下载我们浏览器对应版本的WebDriver,比如我的谷歌版本

7dd2f79964d78dd161b20cf8d47b4e1.png

Chrome的WebDriver各个版本下载地址:http://npm.taobao.org/mirrors/chromedriver

如果是其他浏览器就直接去百度了

然后下载好了有一个chromedriver.exe文件,把这个文件放入你的python的Script中,这样就能用了

47163d55f97cbb21e79b9d3ff0d906e.png

Fidder是一个抓包工具,我们如果需要爬取一些动态数据,也就是我们ajax加载出来的数据,我们一般是无法直接在网页上看到的,所以需要通过抓包工具来获取请求地址

Fidder官网:https://www.telerik.com/fiddler

它能获取你电脑所有发送的请求

案例demo1,爬取今日头条的某条新闻的评论

评论一般是ajax加载出来的,所以一般是动态数据,所有首先我们需要通过抓包工具来获取它的请求地址(因为F12获取不到一些数据地址,所以我们需要下载抓包工具),然后才能获取它的数据。

"""
使用sekenium获取今日头条新闻评论
"""
from selenium import webdriver
import time
# options = webdriver.ChromeOptions()
# options.add_argument("--headless")
driver = webdriver.Chrome()
driver.get("https://www.toutiao.com/group/6749399264998212110/")
# 获取 加载更多 超链接
loadMore = driver.find_element_by_css_selector("a.c-load-more")
# 模拟浏览器点击事件
loadMore.click()
time.sleep(2)
# 获取数据
contentDivs = driver.find_elements_by_css_selector("div.c-content")
for contentDiv in contentDivs:
    content = contentDiv.find_element_by_tag_name("p").text
    print(content)

然后存入了我们的text文件中,可以看到,这就是一个JSON的返回数据

{'message': 'success', 'data': {'has_more': True, 'total': 106, 'comments': [{'text': '限制的是在北京居住生活而长期
驾驶非京牌车的行为。正常来京办事不受影响。北京车牌到外地也是短期的,所以不存在外地也限制北京车的问题。', 
'digg_count': 615, 'reply_data': {'reply_list': []}, 'reply_count': 0, 'create_time': 1571398213, 'user': 
{'avatar_url': 'https://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/3796/2975850990~120x256.image', 'user_id': 
100388200396, 'name': '人间正道的丝路花雨'}, 'dongtai_id': '6749103925351350275', 'user_digg': 0, 'id': 
'6749103925351350275'}, {'text': '支持,早该限制外地牌照,就像北京的房子,外地人来京就租房子,如果您来就盖房这地方
就没办法生活了', 'digg_count': 686, 'reply_data': {'reply_list': []}, 'reply_count': 0, 'create_time': 1571398053, 
'user': {'avatar_url': 'https://p3.pstatp.com/thumb/dafd0002dc655e0d9151', 'user_id': 52617043834, 'name': 
'点1449308'}, 'dongtai_id': '6749103240320647171', 'user_digg': 0, 'id': '6749103240320647171'}, {'text': 
'举双手赞成
                                                                                                            

来源:PY学习网:原文地址:https://www.py.cn/article.html