gpt4 book ai didi

python - 使用Python利用爬取的数据

转载 作者:太空宇宙 更新时间:2023-11-03 15:49:41 24 4
gpt4 key购买 nike

我制作了一个脚本,允许我从网站上删除动态内容。对于此脚本,我创建了一个几乎无限循环来抓取数据并将其保存在 csv 文本文件中,以便稍后进行操作。虽然我的大部分计算不需要实时进行,但进行一些快速的实时计算仍然对我非常有用。我的问题是,我不想通过在脚本中进行计算并将它们与数据同时添加到文本文件来减慢脚本的速度。为什么这是管理小型实时计算而不减慢我的抓取脚本的最佳方式?谢谢你!

最佳答案

您可以为写入 csv 文件的每一行启动一个新线程。我的示例使用 youtube 并抓取播放列表,将链接写入 csv 文件,并启动一个线程,您可以在其中对每个链接执行某些操作。

import re
from selenium import webdriver
from bs4 import BeautifulSoup
import requests
from threading import Thread
from time import sleep
import csv

def threaded_function(arg):
print arg # do something with link
sleep(1)

#Asks which playlist you want downloaded
print ('Which playlist do you want to download?')
playlist = raw_input()

#Access my youtube playlists page
driver = webdriver.Chrome(executable_path='/usr/lib/chromium-browser/chromedriver')
driver.get("https://www.youtube.com/user/randomuser/playlists?sort=dd&view=1&shelf_id=0")

#Access the 'Favorites' playlist
if playlist == 'Favorites':
driver.find_element_by_xpath('//a[contains(text(), "Favorites")]').click()
newurl = driver.current_url

requrl = requests.get(newurl)
requrlcont = requrl.content
links = []
soup = BeautifulSoup(requrlcont, "html.parser")
for link in soup.find_all('a'):
#print("link " + str(link))
if re.match("/watch\?v=", link.get('href')):
links.append(link.get('href'))
writer = csv.writer(open("output.csv", 'w'))
writer.writerow([link])
thread = Thread(target=threaded_function, args=(link, ))
thread.start()
thread.join()
print "thread finished...exiting"

print links

测试

python pyprog.py 
Which playlist do you want to download?
Favorites
...

关于python - 使用Python利用爬取的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41418738/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com