selenium抓取weibo(移动版) Other element would receive the click

ID的获取:

将网页版F12用手机版模拟打开并刷新

链接会变成如下1的链接格式,最后的一长串即为ID编号

js = "var q=document.documentElement.scrollTop=6600"
driver.execute_script(js)

控制滚动条向下滑动,基于最顶端的距离

driver.execute_script("arguments[0].scrollIntoView(false);", target)

将要点击的元素移动到当前页面的底部


driver.execute_script("window.scrollBy(0, 300)")

有时会出现元素被2遮挡导致报错的情况,采用继续滚动300的操作使之避开点击(这个问题导致我研究了好久)

报错内容如下

selenium.common.exceptions.WebDriverException: Message: unknown error: Element <div class="weibo-text">...</div> is not clickable at point (456, 761). Other element would receive the click: <a data-v-5691035e="" href="javascript:;" ontouchstart="" class="btn">...</a>
  (Session info: chrome=68.0.3440.106)
  (Driver info: chromedriver=2.39.562718 (9a2698cba08cf5a471a29d30c8b3e12becabb0e9),platform=Windows NT 10.0.17134 x86_64)

提示内容为其他元素接受到此点击动作

if判断条件时判断是否日期时昨天,只有符合昨天的日期才执行点击操作

不符合的跳过(各位可自行设置过滤条件)

from lxml import etree
from selenium import webdriver
import time
import re
import os
from urllib import request

TaskId = 2208273904
url = 'https://m.weibo.cn/u/{}'.format(TaskId)
AppName = '微博'

options = webdriver.ChromeOptions()
options.add_argument(
    'user-agent="Mozilla/5.0 (iPod; U; CPU iPhone OS 2_1 like Mac OS X; ja-jp) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5F137 Safari/525.20"')
driver = webdriver.Chrome(executable_path='chromedriver.exe', chrome_options=options)
driver.get(url=url)
time.sleep(5)

html = etree.HTML(driver.page_source)
timess = html.xpath('//span[@class="time"]/text()')
js = "var q=document.documentElement.scrollTop=3300"
driver.execute_script(js)
time.sleep(2)
js = "var q=document.documentElement.scrollTop=6600"
driver.execute_script(js)
time.sleep(2)
js = "var q=document.documentElement.scrollTop=9900"
driver.execute_script(js)
time.sleep(2)
nums = etree.HTML(driver.page_source).xpath('//div[@class="card m-panel card9"]')
print(len(nums) + 1)
htmlaa = etree.HTML(driver.page_source).xpath('//span[@class="time"]/text()')
for i in range(1, len(nums) + 1):
    target = driver.find_element_by_xpath('//div[@class="card m-panel card9"][{}]'.format(i))
    # arguments[0]:指代的就是target,就是要定位的元素
    driver.execute_script("arguments[0].scrollIntoView(false);", target)
    driver.execute_script("window.scrollBy(0, 300)")
    time.sleep(1)
    print(htmlaa[i - 1])
    if '昨天' in htmlaa[i - 1]: 
        a = driver.find_elements_by_xpath(
            '//*[@id="app"]//div[@class="card m-panel card9"][{}]//div[@class="weibo-text"]'.format(i))[0]
        a.click()
        time.sleep(2)
        htmla = etree.HTML(driver.page_source)
        shijian = htmla.xpath('//span[@class="time"]/text()')
        print(driver.current_url)
        print(shijian)
        driver.find_element_by_xpath('//*[@id="app"]/div[1]/div/div[1]/div[1]/i').click()
        print('返回上一级')
        time.sleep(3)
    else:
        continue

driver.quit()

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值