从网页抓取视频(标题池和代理池旋转请求工作环境和异步I/O编程自动化站点)
优采云 发布时间: 2021-11-08 04:10从网页抓取视频(标题池和代理池旋转请求工作环境和异步I/O编程自动化站点)
种类。
在这里,您可以看到“歌词”类别收录艺术家姓名,而“div-share”类别收录歌曲名称。
"I Cry" lyrics
Shayne Ward Lyrics
因此,要从服务器获取页面,我们必须使用请求库通过其 URL 从 Internet 获取网页。
# Importing Librabies
import requests
# Web Page you want to Scrap
url = 'https://www.azlyrics.com/lyrics/shayneward/icry.html'
response = requests.get(url)
# Printing the Status Code of received URL
print(response.status_code)
# The Status code will be 200 if Everything is ok.
在上面的代码中,我们通过请求库请求URL,然后将结果保存在响应中。要运行该文件,您可以使用以下命令
python3 print_lyrics.py
现在要从响应中提取详细信息,我们必须使用 BeautifulSoup 库来解析 HTML 页面,它可以使用 Command BeautifulSoup (response.text,'html.parser') 命令从响应中获取 html 解析文本。解析网页的不同部分可能会有些混乱,但是通过练习,您可以轻松地从网页中获取所需的详细信息。
# Importing Libraries
import requests
from bs4 import BeautifulSoup
url = 'https://www.azlyrics.com/lyrics/shayneward/icry.html'
response = requests.get(url) # Using Requests to get Webpage
html_soup = BeautifulSoup(response.text , 'html.parser') # Parsing the WebPage to get its HTML Content
# These are
singer = html_soup.find('div' , class_ = 'lyricsh').h2.text
song_name = html_soup.find('div' , class_ = 'col-xs-12 col-lg-8 text-center').find_all('div',class_= 'div-share')[1].text.split('"')[1]
lyrics = html_soup.find('div' , class_ = 'col-xs-12 col-lg-8 text-center').find_all('div')[5].text
print('Singer Name -> {}'.format(singer))
print('Song Name -> {}'.format(song_name))
print('Lyrics is -> {}'.format(lyrics))
该文件的输出将是终端中的艺术家姓名、歌曲名称和歌词。
保存回复
为了将此输出保存到磁盘,我将使用 JSON 来转储数据,但您也可以使用 CSV 或文本。除非你打算丢弃和管理数以百万计的歌词数据集,否则使用 SQL 将数据保存到磁盘可能会产生致命的后果。只需要几首歌词,JSON 或 CSV 就可以很好地工作。完整的代码现在看起来像
import requests
from bs4 import BeautifulSoup
import json
url = 'https://www.azlyrics.com/lyrics/shayneward/icry.html'
response = requests.get(url)
html_soup = BeautifulSoup(response.text , 'html.parser')
singer = html_soup.find('div' , class_ = 'lyricsh').h2.text
song_name = html_soup.find('div' , class_ = 'col-xs-12 col-lg-8 text-center').find_all('div',class_= 'div-share')[1].text.split('"')[1]
lyrics = html_soup.find('div' , class_ = 'col-xs-12 col-lg-8 text-center').find_all('div')[5].text
data = {}
data['singer'] = singer
data['song_name'] = song_name
data['lyrics'] = lyrics
with open('data.json', 'w') as outfile:
json.dump(data, outfile)
这将在与歌手和歌词相同的目录中创建文件“data.json”。
标题池和代理池轮换请求工作环境和异步 I/O 编程自动化站点抓取 API 访问在 Heroku 上托管我们的 Flask 服务器