首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >硒网刮刀刮苹果过去三年的推特

硒网刮刀刮苹果过去三年的推特
EN

Code Review用户
提问于 2022-05-01 07:01:48
回答 1查看 251关注 0票数 1

我想使用我的网络刮刀,以获得所有关于苹果的推特,直到我指定的日期。目前,我正在收集今天或最近几天的推文。然而,我的目标是刮掉过去三年所有的推文。当我运行我的代码时,它只需要几个小时就能运行几天。有人对我如何优化我的代码以更快地运行有什么建议吗?对于这个可能微不足道的问题,我很抱歉,但我是个初学者,我正试着逐步开始。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import time
import pandas as pd
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait


options = Options()
options.headless = True
options.add_argument('window-size=1920x1080')

web = "https://stocktwits.com/search"
driver = webdriver.Chrome(r"C:\Users\veron\Downloads\chromedriver\chromedriver.exe", options=options)
driver.get(web)
#driver.maximize_window()

username = driver.find_element_by_xpath('//input[@placeholder = "Symbol or @Username"]')
username.send_keys("AAPL")

time.sleep(2)

username.send_keys(Keys.ENTER)

time.sleep(2)


def get_tweet(element):
    try:
        user = element.find_element_by_xpath('.//span[@class = "st_2JY3sEE"]/a[contains(@href, "/")]/span[text()]').text
        text = element.find_element_by_xpath('.//div[@class="st_3SL2gug"]').text
        date = element.find_element_by_xpath('.//a[@class ="st_28bQfzV st_1E79qOs st_3TuKxmZ st_1VMMH6S"]').text
        # date = date_old.replace("\n", "")
        tweet_data = [user, text, date]
    except:
        tweet_data = ['user', 'text', 'date']
    return tweet_data


user_data = []
text_data = []
date_data = []
scrolling = True

while scrolling:

    tweets = WebDriverWait(driver, 5).until(
        EC.presence_of_all_elements_located((By.XPATH, '//div[@class = "st_2o0zabc st_jGV698i st_PLa30pM"]')))
    # print(len(tweets))
    for tweet in tweets:
        tweet_list = get_tweet(tweet)
        user_data.append(tweet_list[0])
        text_data.append(" ".join(tweet_list[1].split()))
        date_data.append(tweet_list[2])

    # Get the initial scroll height
    last_height = driver.execute_script("return document.body.scrollHeight")
    # Specified date
    str1 = "4/30/22"

    while True:
        # Scroll down to bottom
        driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
        # Wait to load page
        time.sleep(2)
        # Calculate new scroll height and compare it with last scroll height
        new_height = driver.execute_script("return document.body.scrollHeight")
        # check if the date substring from above is in the date list, condition 1
        res = any(str1 in string for string in date_data)
        if res is True:
            scrolling = False
            break
        # condition 2
        if new_height == last_height:
            scrolling = False
            break

        else:
            last_height = new_height
            break

driver.quit()
df_tweets = pd.DataFrame({'user': user_data, 'text': text_data, 'date': date_data})  # , 'date': date_data
df_tweets.to_csv('stocktwits_tweets.csv', index=False)
print(df_tweets)
EN

回答 1

Code Review用户

发布于 2022-05-03 12:15:02

有人对我如何优化我的代码以更快地运行有什么建议吗?

测量什么是慢的。一种典型的做法是:

  • 选择一些您认为可能比较慢的代码块。如果可能的话,试着把它变成大约一半的代码。
  • 度量代码开始之前和结束后的时间。
  • 减去这两个人,看看花了多长时间。如果你每秒收到60次请求,那么每一次都要花费0.016秒。如果代码需要0.015秒,那就是“慢一半”。如果代码需要0.0001秒,那就是“快一半”。
  • 慢慢缩小代码中最慢的部分是什么

一旦你知道什么是最慢的,你可能已经有了解决办法。或者如果没有,那就随便问问别人吧。通过自己做这项调查,你会更多地尊重人们的时间,而且更有可能得到答案,因为你证明了你做了最初的工作。

票数 1
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codereview.stackexchange.com/questions/276203

复制
相关文章
为什么我总写 Bug ?
写代码的过程中,难免会出现各种各样的 Bug。但实际上,很多 Bug 产生的原因是类似的。于是我总结了一些自己学编程时写 Bug 的诱因,希望大家引以为戒,在以后写代码的时候能更多注意。
程序员鱼皮
2021/09/15
7000
高数 下总复习 完结
参数方程–>曲线积分 曲线积分 第二类曲线积分 (对面积的) 此时可以不用 上限大于下限 三 格林公式 及其应用 2 .积分与路径无关 如果不封闭 曲面积分 对于 dyd
CaesarChang张旭
2021/01/26
4090
高数 下总复习  完结
缺陷定位 | 测试发现了Bug,还要分析定位Bug?(一)
hello今天分享的内容,可能会有很多朋友持不同观点,或被很多同行朋友diss,不过没关系,即使被喷被diss,我依然会坚持我的观点,把最真实的干货分享给大家,希望得到支持。
王大力测试进阶之路
2022/03/14
6350
PyTorch(总)---PyTorch遇到令人迷人的BUG与记录
BUG1 在使用NLLLoss()激活函数时,NLLLoss用来做n类分类的,一般最后一层网络为LogSoftmax,如果其他的则需要使用CrossEntropyLoss。其使用格式为:loss(m(
zenRRan
2018/04/10
2.8K0
PyTorch(总)---PyTorch遇到令人迷人的BUG与记录
一个BUG的发现、定位和解决
前言 在iOS 11发布之后,出现了一系列适配相关的问题,UIScrollView在pagingEnabled=YES时滑动手势不灵敏,UITableView的滑动删除功能变动,UIImagePickerViewController的取消按钮点击区域变小等,本文介绍其中一个UIAlertView问题,分享其发现、定位和解决。 正文 1、问题产生 问题的最初,是iOS 11正式版发布后不久,测试的同学提了一个iOS 11相关的BUG,表现是:在直播间内发送聊天信息,如果被禁言,会弹出“被禁言”提示,键盘收回去
落影
2018/04/27
1.5K0
一个BUG的发现、定位和解决
发现了一个vscode的bug
被一个BUG折磨了3个小时。我知道引起这个BUG的原因,是因为项目中某些配置文件中配置的程序包引用路径出错了,要解决这个问题很简单,只需要将这些配置文件中错误的程序包引用路径找出来并修改之就可以了。
用户1608022
2018/08/01
5870
BUG赏金 | 当我发现iFrame注入时的利用
iFrame注入是一种非常常见的跨站脚本攻击。它包括已插入到网页或文章内容的一个或多个iframe代码,或一般下载一个可执行程序或进行其他动作使网站访客的电脑妥协。在最好的情况下,谷歌可能会标注该网站“恶意”。最糟糕的情况是,站点所有者和访问者最终使用了受恶意软件感染的计算机。
Timeline Sec
2019/12/26
1.3K0
根据原理撸一个带bug的PromiKit
之前我们说了PromiseKit今天就带领大家来分析一下这个PromiseKit,之后我们再根据PromiseKit的思想剥茧抽丝的简易的撸一个微型的PromiseKit。
大话swift
2019/07/03
6620
根据原理撸一个带bug的PromiKit
只要发现bug,就必须要提吗
大家好,我是乐天派阿常,一位有着8年管理经验的软件测试人,今天我和大家分享职场思考,发现bug是否要记录。
程序媛淼淼
2022/09/01
2830
解Bug之路-Druid的Bug 原
笔者很热衷于解决Bug,同时比较擅长(网络/协议)部分,所以经常被唤去解决一些网络IO方面的Bug。现在就挑一个案例出来,写出分析思路,以飨读者,希望读者在以后的工作中能够少踩点坑。
无毁的湖光-Al
2018/08/14
1.1K0
解Bug之路-Druid的Bug                                                                       原
探索TiDB Lightning的源码来解决发现的bug
上一篇《记一次简单的Oracle离线数据迁移至TiDB过程》说到在使用Lightning导入csv文件到TiDB的时候发现了一个bug,是这样一个过程。
HOHO
2022/05/09
4140
探索TiDB Lightning的源码来解决发现的bug
万万没想到,这都能发现 Bug?!
大家好,我是鱼皮,昨天工作中遇到一个挺好玩儿的小 Bug,和大家分享下,小白可懂~
程序员鱼皮
2021/12/15
4040
谷歌源生bug发现与解决记录
1、进入拨号界面,输入 *#*#4636#*#* ,然后会进入手机测试界面。 2、点击第三栏 Wi-Fi information 。 3、进入Wi-Fi information 界面后,点击第一栏 Wi-Fi API 。 4、进入Wi-Fi API 界面后,点击 enableNetwork 。这时会弹出一个输入栏,如果你输入为空或者输入为非数字,如何点击 OK ,连续操作俩次,就会显示 Settings keeps stopping。
用户7557625
2020/07/15
5300
【改BUG】项目遇到的奇葩bug
今天,我的下级代理联系我说,我们的平台,应用服务批量导入后,用户密码含有“0”的都不显示,例如密码是“07121239”但是平台只显示“7121239”,今天做了下排查,本文仅记录一下今天排查的经历
德宏大魔王
2023/08/08
1970
【改BUG】项目遇到的奇葩bug
JDK 的这3个bug,你发现了吗?
如果两个变量中间隔了比较长的其它代码,很可能会导致开发人员将两者混淆,导致逻辑认知错误,从而写出或改出有问题的代码。
用户5224393
2019/06/18
5430
你能发现这段 Python 代码中的 bug 吗?
原文链接:https://dwrodri.gitlab.io/can-you-spot-the-bug-in-this-python-code/
腾讯云 CODING
2023/08/18
1370
你能发现这段 Python 代码中的 bug 吗?
为什么程序员发现不了自己的BUG?
最近在朋友圈流行了这样的一个小学数学题,当然结果是“出乎意料”。看似简单的结果,儿童一般能够做对,而大人却几乎很少有人做对,分析下来,原因无非是惯性思维下的粗心导致的完全错误。今天我们就一起来分析下思考过程。
编程范 源代码公司
2018/08/03
3570
为什么程序员发现不了自己的BUG?
伪随机数算法_伪随机数预测工具
转载内容,有更改,感谢原作者(http://www.cnblogs.com/softidea/p/5824240.html#3697214)
全栈程序员站长
2022/09/16
1K0
AI找Bug,一键快速预测
在程序开发中,程序员每天都要和 Bug 打交道,对新手程序员而言,debug 是一件非常让人头疼的事情。好不容易写完一段代码,一运行,全是红色,找了好几圈,被几个符号累瞎了眼。
AI科技大本营
2019/05/06
8880
AI找Bug,一键快速预测
点击加载更多

相似问题

SQL -计算每天打开的总bug数

54

rangeOfUnit每月返回“”数周(iOS7 bug)

13

C# RichTextBox发现() Bug?

13

在XPages中发现的Bug

21

FindBugs没有显示发现的bug

35
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文