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()