selenium练习--爱彼迎房东主页评论爬取

Airbnb 房东主页评论爬取

示例网页

经常会出现一个报错:
Selenium弹出新页面无法定位元素问题(Unable to locate element)
可以用如下方法:

wait = ui.WebDriverWait(browser,10)
wait.until(lambda browser: browser.find_element_by_方法(''))

WebDriverWait(browser,10):10秒内每隔500毫秒扫描1次页面变化,当出现指定的元素后结束。当然可以使用静态的方法sleep,我之前睡五秒,但有的时候网速不稳定,所以可能还是定位不到,使用这种动态的方法,会比较稳妥。

从代码可读性上和效率上都是A方法比较好,更加符合python的特性。

完整代码如下:

from selenium import webdriver
import selenium.webdriver.support.ui as ui
import time
fp = open('test3.csv','w',encoding='utf_8_sig') 
writer = csv.writer(fp,delimiter=' ')

browser = webdriver.Firefox()
wait = ui.WebDriverWait(browser,10)
browser.get('https://www.airbnb.cn/users/show/237746032')

for j in range(1,10):         
    wait.until(lambda browser: browser.find_element_by_xpath('/html/body/div[3]/main/div/div/div/div/div/div[2]/div/div[4]/section/div/div[{}2]/div[2]/button'.format(j)))
    elem_btn = browser.find_element_by_xpath('/html/body/div[3]/main/div/div/div/div/div/div[2]/div/div[4]/section/div/div[{}2]/div[2]/button'.format(j)) #定位搜索按钮
    elem_btn.click()
for i in range(2,50):
    wait.until(lambda browser: browser.find_element_by_xpath('/html/body/div[3]/main/div/div/div/div/div/div[2]/div/div[4]/section/div/div[{}]/div[1]/div/div[2]/div/div'.format(i)))
    review = browser.find_element_by_xpath('/html/body/div[3]/main/div/div/div/div/div/div[2]/div/div[4]/section/div/div[{}]/div[1]/div/div[2]/div/div'.format(i)).text
    #print(des)
    writer.writerow((review))
fp.close() 

在这里插入图片描述

部分代码解释

for j in range(1,10):         
    wait.until(lambda browser: browser.find_element_by_xpath('/html/body/div[3]/main/div/div/div/div/div/div[2]/div/div[4]/section/div/div[{}2]/div[2]/button'.format(j)))
    elem_btn = browser.find_element_by_xpath('/html/body/div[3]/main/div/div/div/div/div/div[2]/div/div[4]/section/div/div[{}2]/div[2]/button'.format(j)) #定位搜索按钮
    elem_btn.click()

这段代码是循环点击“显示更多评价”,定位的规律是倒数第二个div累加10,从而将所有评价加载出来,循环次数可以根据评论数量来设置。
在这里插入图片描述
打印评论,循环参数根据评论数量决定,定位的规律是倒数第六个div累加1。

for i in range(2,50):
    wait.until(lambda browser: browser.find_element_by_xpath('/html/body/div[3]/main/div/div/div/div/div/div[2]/div/div[4]/section/div/div[{}]/div[1]/div/div[2]/div/div'.format(i)))
    review = browser.find_element_by_xpath('/html/body/div[3]/main/div/div/div/div/div/div[2]/div/div[4]/section/div/div[{}]/div[1]/div/div[2]/div/div'.format(i)).text
    print(review)

在这里插入图片描述

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值