Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Web scraping 网页抓取音频和相关文本的形式ganjoor网站由colab作为波斯语语音到文本数据库_Web Scraping - Fatal编程技术网

Web scraping 网页抓取音频和相关文本的形式ganjoor网站由colab作为波斯语语音到文本数据库

Web scraping 网页抓取音频和相关文本的形式ganjoor网站由colab作为波斯语语音到文本数据库,web-scraping,Web Scraping,我试图收集一些音频形式,以收集音频文件及其文本,如正在阅读的内容。。。如下所示: 通过使用google colab,我尝试了不同的方法: 我得到了这样的错误,你可以在上面的colab页面看到: /usr/local/lib/python3.6/dist-packages/ipykernel_launcher.py:29: DeprecationWarning: use options instead of chrome_options ----------------------------

我试图收集一些音频形式,以收集音频文件及其文本,如正在阅读的内容。。。如下所示:

通过使用google colab,我尝试了不同的方法:

我得到了这样的错误,你可以在上面的colab页面看到:

/usr/local/lib/python3.6/dist-packages/ipykernel_launcher.py:29: DeprecationWarning: use options instead of chrome_options
---------------------------------------------------------------------------
WebDriverException                        Traceback (most recent call last)
<ipython-input-27-c4b1e303b5e7> in <module>()
     28 
     29 wd = webdriver.Chrome('chromedriver', chrome_options=options)
---> 30 wd.get(url)
     31 print(wd.page_source)  # re

2 frames
/usr/local/lib/python3.6/dist-packages/selenium/webdriver/remote/errorhandler.py in check_response(self, response)
    240                 alert_text = value['alert'].get('text')
    241             raise exception_class(message, screen, stacktrace, alert_text)
--> 242         raise exception_class(message, screen, stacktrace)
    243 
    244     def _value_or_default(self, obj, key, default):

WebDriverException: Message: unknown error: net::ERR_CONNECTION_TIMED_OUT
  (Session info: headless chrome=85.0.4183.83)

/usr/local/lib/python3.6/dist-packages/ipykernel\u-launcher.py:29:DeprecationWarning:使用选项而不是chrome\u选项
---------------------------------------------------------------------------
WebDriverException回溯(最近一次调用上次)
在()
28
29 wd=webdriver.Chrome('chromedriver',Chrome\u options=options)
--->30 wd.get(url)
31打印(wd.page_source)#重新打印
2帧
/检查响应中的usr/local/lib/python3.6/dist-packages/selenium/webdriver/remote/errorhandler.py(self,response)
240警报文本=值['alert']。获取('text')
241引发异常类(消息、屏幕、堆栈跟踪、警报文本)
-->242引发异常类(消息、屏幕、堆栈跟踪)
243
244定义值或默认值(self、obj、key、default):
WebDriverException:消息:未知错误:网络::错误\u连接\u超时\u
(会话信息:无头镀铬=85.0.4183.83)

connectionError:HTTPSConnectionPool(host='ganjoor.net',port=443):url超过最大重试次数:/hafez/ghazal/sh1/(由NewConnectionError引起(“:无法建立新连接:[Errno 110]连接超时,”)
因此,我的猜测是,这种web抓取需要一些适当的代理标头设置或在设置中使用一些代理,我不知道哪个标头是适当的,或者存在哪些代理站点或免费vpn提供商,以及

更新:

根据@baduker的回答,colab在连接站点时出现了一些问题,并且再次显示了该错误(添加到站点的@baduker代码:

举个例子,如果你能从ganjoor网站上抓取一个音频及其相关文本,我将不胜感激


谢谢。

你不需要硒的原始能量来获得你想要的东西

它可以通过
请求、BeautifulSoup和一些re
来完成

regex模块对于从页面源获取所有
.mp3
源URL非常有用。如果您查看它,您将看到一个
标记,其中包含一些JavaScript和您需要的所有URL

解析它并下载
.mp3

以下是如何做到这一点:

import re

import requests

from bs4 import BeautifulSoup
from shutil import copyfileobj

url = "https://ganjoor.net/hafez/ghazal/sh1/"
page = requests.get(url).text

text = BeautifulSoup(page, "html.parser").find_all("div", {"class": "m2"})
print([t.text.replace("\u200c", "") for t in text])

pattern = re.compile(r"https://i\.ganjoor\.net/a2?/\d+[-a-z]+?\.mp3")
audio_tracks = re.findall(pattern, page)
print(audio_tracks)

for track in audio_tracks:
    print(f"Fetching track: {track}...")
    with requests.get(track, stream=True) as t, \
            open(track.split("/")[-1], "wb") as a:
        copyfileobj(t.raw, a)

音频输出:

2130-ak.mp3
2130-az.mp3
2130-ff.mp3
2130-hr.mp3
2130-mfk.mp3
2130-ml.mp3
2130-ng.mp3
2130-zsh.mp3
案文如下:

['که عشق آسان نمود اول ولی افتاد مشکلها', 'ز تاب جعد مشکینش چه خون افتاد در دلها', 'جرس فریاد میدارد که بربندید محملها', 'که سالک بیخبر نبود ز راه و رسم منزلها', 'کجا دانند حال ما سبکباران ساحلها', 'نهان کی ماند آن رازی کز او سازند محفلها', 'متی ما تلق من تهوی دع الدنیا و اهملها']


您不需要使用
Selenium
的原始功能来获得您想要的东西

它可以通过
请求、BeautifulSoup和一些re
来完成

regex模块对于从页面源获取所有
.mp3
源URL非常有用。如果您查看它,您将看到一个
标记,其中包含一些JavaScript和您需要的所有URL

解析它并下载
.mp3

以下是如何做到这一点:

import re

import requests

from bs4 import BeautifulSoup
from shutil import copyfileobj

url = "https://ganjoor.net/hafez/ghazal/sh1/"
page = requests.get(url).text

text = BeautifulSoup(page, "html.parser").find_all("div", {"class": "m2"})
print([t.text.replace("\u200c", "") for t in text])

pattern = re.compile(r"https://i\.ganjoor\.net/a2?/\d+[-a-z]+?\.mp3")
audio_tracks = re.findall(pattern, page)
print(audio_tracks)

for track in audio_tracks:
    print(f"Fetching track: {track}...")
    with requests.get(track, stream=True) as t, \
            open(track.split("/")[-1], "wb") as a:
        copyfileobj(t.raw, a)

音频输出:

2130-ak.mp3
2130-az.mp3
2130-ff.mp3
2130-hr.mp3
2130-mfk.mp3
2130-ml.mp3
2130-ng.mp3
2130-zsh.mp3
案文如下:

['که عشق آسان نمود اول ولی افتاد مشکلها', 'ز تاب جعد مشکینش چه خون افتاد در دلها', 'جرس فریاد میدارد که بربندید محملها', 'که سالک بیخبر نبود ز راه و رسم منزلها', 'کجا دانند حال ما سبکباران ساحلها', 'نهان کی ماند آن رازی کز او سازند محفلها', 'متی ما تلق من تهوی دع الدنیا و اهملها']


谢谢,这对我帮助很大,但我不知道它为什么不在colab上工作!可以看到你发送的是什么?我不熟悉Google colab。试着用Python3在本地运行它。我已经在colab中发送了上述代码的结果,但再次感谢,我理解ganjoor网站正在响应,它可能是可以的如果你觉得我的答案有用,请考虑接受它或是投票。谢谢。COLAB是免费的Ubuntu服务器,可以测试它的AI项目,你可以用Python和其他语言(Gjava和……需要一些技巧)在上面安装GITHUB项目。。你可以通过点击打开colab图标来测试它。谢谢,这对我帮助很大,但我不知道它为什么不能在colab上工作!可以看到你发送的是什么?我不熟悉谷歌colab。尝试用Python 3在本地运行。我已经在colab中发送了上述代码的结果,但再次感谢,我理解第二,GangJor站点是可以响应的,它可以由VPS或本地PC来完成。这是固定的,我的问题很多。如果你觉得我的答案有用,请考虑接受它或UpCube。谢谢。COLAB是免费的Ubuntu服务器来测试它的AI项目,你可以用Python和其他语言在它上面安装GITHUB项目。(java和…需要一些技巧!)您可以通过以下方式单击在colab中打开图标来测试它