selenium爬取魔方公寓, 利用鼠标中轴滚动动态拿到魔方公寓评论数据

6 篇文章 0 订阅
2 篇文章 0 订阅

     最近看到有兄弟们爬取魔方公寓受阻了,虽然能爬取房源信息但是爬取不到评论信息,而且接口是加密的, 用selenium的模拟滚动条滚动也不能让评论下翻,最后只能拿到十几条数据,读者最后试了几遍, 用了很多方法都没法实现,但是最后还是被小编攻破了, 一起来看一下吧!

    首先我是按照常规写法, 模拟滚动条滚动,但是最后得到的却是主页面的滚动而评论页纹丝不动, 后来发现评论页原来整体是一个div标签,所以我们得换个思路了.

现在换个思路, 我们在点开全部评论的时候鼠标滑动评论是可以自动向下加载的,但是为什么到最后模拟滚动的时候不行呢,小编就想着是不是把鼠标移动到这个全部评论上就可以让评论向下加载呢, 于是我就模拟鼠标点击其中一个评论, 使得鼠标停放到评论上,然后

模拟滚动,本来信心满满的小编又受打击了.不过咱们继续

     最后我要发大招了, 狠心钻研下我终于发现方法了, 还有selenium鼠标第三方库这种好东西呢,  selenium鼠标操作有个移动鼠标的操作

move_by_offset(x,y)   移动到坐标为(x, y)的位置

但是仅仅移动到整个div更多评论上还不够, 滚动的其实还是整个window页面, 那我们就得再换换思路了, 其实仔细想想,我们在拉动评论下滚的时候到底是怎么向下滚动的呢? 最后我想到应该可以模拟鼠标中轴滚动,因为我们在翻页的时候就是用的鼠标滚动不是吗,于是我成功了!话不多说来看看结果:

 

那下面咱们就来分析一下代码:

import time
鼠标操作需要导入win32api和win32con 两个库
import win32api, win32con
from win32api import GetSystemMetrics
selenium模拟浏览器操作鼠标需要导入ActionChains方法
from selenium.webdriver.common.action_chains import ActionChains
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from win32con import SM_CXSCREEN, SM_CYSCREEN
使用谷歌驱动
chrome_options = Options()
有界面谷歌浏览器
path = r'E:\爬虫\day06\day06全天\ziliao\chromedriver'
driver = webdriver.Chrome(executable_path=path, chrome_options=chrome_options)
驱动地址按照自己的安装位置添加
url = 'https://www.52mf.com.cn/shopDetails/8069'
driver.get(url=url)
让界面滚动到最后更多评论信息界面
for i in range(3):
    driver.execute_script('window.scrollBy(0, 200)')
    time.sleep(0.2)
找到查看全部评论标签
all_pinglun = driver.find_element_by_xpath('//*[@id="anchor6"]/div[2]')
模拟点击
all_pinglun.click()
time.sleep(1)

ping_lun = driver.find_element_by_xpath('//div[@id="modal-root"]//ul/li[3]/p')
计算浏览器界面宽高
x = GetSystemMetrics(SM_CXSCREEN)
y = GetSystemMetrics(SM_CYSCREEN)
得到中间值
print(x/2, y/2)
界面最大化
driver.maximize_window()
鼠标移动到正中心
ActionChains(driver).move_by_offset(x/2, y/2)
time.sleep(1)
for l in range(200):
    # driver.execute_script('window.scrollBy(0, 200)')
    # time.sleep(0.2)
    模拟鼠标中轴滚动
    win32api.mouse_event(win32con.MOUSEEVENTF_WHEEL, 0, 0, -1000)
    time.sleep(0.2)

关闭模拟器
driver.close()

 

最后我们就得到我们想要的结果了,评论已经可以被操作下翻, 我们也可以拿到我们想要的动态加载的所有评论数据了,你也快试试吧!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值