首页 > 编程语言 >PYTHON 微博单独网址

PYTHON 微博单独网址

时间:2023-04-30 11:44:13浏览次数:49  
标签:webdriver PYTHON selenium 网址 微博 sleep import 页面 browser

from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.common.by import By #按照什么方式查找,By.ID,By.CSS_SELECTOR
from selenium.webdriver.common.keys import Keys #键盘按键操作
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait #等待页面加载某些元素
import re,sys,time,os
browser=webdriver.Chrome()
try:
    browser.get('https://weibo.com/u/5861571226')
    while 1:
        wait=WebDriverWait(browser,50)
        wait.until(EC.title_contains('个人主页')) #等到id为content_left的元素加载完毕,最多等10秒
        time.sleep(10)
        yuma=browser.page_source
        lb=re.findall('<!----><!----><a title=".*?" href="(.*?)" class="head',yuma)
        print(browser.current_url)
        print(lb)
        #print(browser.get_cookies())
        js = 'var q=document.documentElement.scrollTop=800'
        browser.execute_script(js)
        time.sleep(3)


finally:
    pass
    #browser.close()

def parse():
    
    browser = webdriver.Chrome()
    # 加载界面
    browser.get(response.request.url)
    sleep(3)
    # 获取页面初始高度
    js = "return action=document.body.scrollHeight"
    height = browser.execute_script(js)
    # 将滚动条调整至页面底部
    browser.execute_script('window.scrollTo(0, document.body.scrollHeight)')
    sleep(5)
    # 定义初始时间戳(秒)
    t1 = int(time.time())
    # 定义循环标识,用于终止while循环
    status = True
    # 重试次数
    num = 0
    while status:
       # 获取当前时间戳(秒)
       t2 = int(time.time())
       # 判断时间初始时间戳和当前时间戳相差是否大于30秒,小于30秒则下拉滚动条
       if t2 - t1 < 30:
          new_height = browser.execute_script(js)
          if new_height > height:
              sleep(2)
              browser.execute_script('window.scrollTo(0, document.body.scrollHeight)')
              # 重置初始页面高度
              height = new_height
              # 重置初始时间戳,重新计时
              t1 = int(time.time())
            elif num < 3:
                # 当超过30秒页面高度仍然没有更新时,进入重试逻辑,重试3次,每次等待30秒
                sleep(3)
                num = num + 1
            else:
                # 超时并超过重试次数,程序结束跳出循环,并认为页面已经加载完毕!
                print("滚动条已经处于页面最下方!")
                status = False
                # 滚动条调整至页面顶部
                browser.execute_script('window.scrollTo(0, 0)')
                break
            sleep(3)
        # 打印页面源码
        driver = browser.page_source
        print(driver)

 

标签:webdriver,PYTHON,selenium,网址,微博,sleep,import,页面,browser
From: https://www.cnblogs.com/xkdn/p/17365080.html

相关文章

  • <Python数据处理> Jacqueline Kazil Katharine Jarmul
    附录:数据分析师:AllenDowney的《统计思维:程序员数学之概率统计(第2版)》很好地介绍了统计数学概念并且使用了Python。CathyO'Neill和RachelSchutt的《数据科学实战》提供了数据科学领域的深入分析。scipy技术栈WesMcKinney编写了《利用Python进行数据分析》......
  • Think Python-How to Think Like a Computer Scientist_chapter4_练习 4-3
    #coding=gbkimportmathimportturtlebob=turtle.Turtle()print(bob)defpie(t,r,n):"""画一个包含n个三角形的饼图。t:Turtleobjectr:三角形腰长n:包含几个三角形或几边形"""angle1=180/nangle2=90+angle1y=......
  • python脚本 --- 去除txt的指定行数
    #-*-coding:UTF8-*-foriinrange(17,800):filename=i+1;withopen('.\\'+str(filename),"r")asf:#读取文本data=f.readlines()f.close()#那么现在data=[0,1,2,3,4,5,6,7,8,9,10]dirtyid=[0,1,2,3,4,5......
  • python-全双工,双工,单工的区别
    全双工(FullDuplex):通信允许数据在两个方向上同时传输,它在能力上相当于两个单工通信方式的结合。全双工指可以同时进行信号的双向传输半双工(HalfDuplex):数据可以在一个信号载体的两个方向上传输,但是不能同时传输。像全双工传输一样,半双工包含一个双向线路,两线制。单工:只允许甲......
  • Python+UDP+Threading
    Python+UDP+Threading近期用pythonsocket使用TCP协议做了一个小型的数据收发服务器,后来由于在实际场景中使用时,出现网络不佳导致出现错误的情况,改成了使用UDP协议重做了一版,总体效果变好了。下面是通用代码,实际使用时在这基础上进行修改即可。#-*-coding:utf-8-*-import......
  • 【模板方法设计模式详解】C/Java/JS/Go/Python/TS不同语言实现
    简介模板方法模式(TemplateMethodPattern)也叫模板模式,是一种行为型模式。它定义了一个抽象公开类,包含基本的算法骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变算法的结构,只是重定义该算法的某些特定步骤。不同的子类以不同的方式实现这些抽象方法,从而对剩余的逻辑有......
  • Python打印一个字典,输出带双引号
    Python中dict(字典)默认的表示方式是用单引号表示键和值,例如:my_dict={'key1':'value1','key2':'value2'}print(my_dict)这将输出:{'key1':'value1','key2':'value2'}如果你想使用双引号代替单引号进行表示,可以使用json模块来实现。......
  • Python MatplotlibDeprecationWarning Matplotlib 3.6 and will be removed two minor
    百度飞桨(PaddlePaddle)-数字识别在Pycharm中使用Matplotlib中的pyplot时,运行代码报错:MatplotlibDeprecationWarning:SupportforFigureCanvaseswithoutarequired_interactive_frameworkattributewasdeprecatedinMatplotlib3.6andwillberemovedtwominorreleases......
  • Python: PostgreSQL
     connectionimportpsycopg2frompsycopg2importError,connection,cursorconn:connection|None=Nonec1:cursor|None=Nonetry:conn=psycopg2.connect(host='localhost',port=5432,user='postgres',......
  • linux c/c++程序集成python库,实现调用python函数
    为了提高开发效率,扩展开发程序的功能,我们经常会在我们的linuxc/c++进程里调用外部脚本,例如lua、python,下面,介绍下如何在自己的linuxc/c++代码里调用python脚本里的函数和类,并且将python库集成到我们自己的进程目录里,这样就不依赖系统环境是否存在python及其版本要求。 ......