python3 爬取乐谱


最近感觉找乐谱下载之类比较麻烦, 于是花了两天时间写了个爬虫程序, 效率倍增。

使用方法: 在https://www.17jita.com上搜索乐谱,点开第一个界面,将网址按程序内格式赋给url_sa下,然后运行,便可以在D:/pic/目录下获得乐谱。


效果如下:



源码(日后有时间会继续完善):

import urllib.request
import re
import os
from bs4 import BeautifulSoup

#database
recipeWeb = "https://www.17jita.com/"
recipeWeb_len = len(recipeWeb)

webList = []
FinalList = []

url_sa = "tab/img/4289"
url = recipeWeb + url_sa + '.html'


def getList(url):
    data = getData(url)
    pre = r'href='
    post = r'.*?html'
    webList = findPreAndPost(pre, post , data) 
    return webList
    
def findPreAndPost(pre, post, data):
    loc = []
    res = []
    length = re.split(r'\s', data)
    for i in length:
        if(re.match(pre,i)):
            loc.append(i)
    for i in loc:
        if(re.match(post,i)):
            res.append(i)
    return res


def getData(url):
    webPage = urllib.request.urlopen(url)
    data = webPage.read()
    data = data.decode('gbk')
    return data


def GetPic(url, cnt):
    data = getData(url)
    soup = BeautifulSoup(data, 'html.parser')

    length = re.split(r'\s', data)

    title = soup.find('h1', {'class': 'ph'}).text
    loc = []
    res = []

    for i in length:
        if(re.match(r'src=',i)):
            loc.append(i)

    for i in loc:
        if(re.match(r'.*?png',i)):
            res.append(i)

    for pic in res:
        tmp = re.search(r'src="(.*?)"',pic)
        pic_url = tmp.group(1)
        print(pic_url)
        if(pic_url[0]=='/' or pic_url[0]!='h'): continue;
        pic_web = urllib.request.urlopen(pic_url)
        pic_data = pic_web.read()
        path = "d:/pic/"+title+'/';
        if not os.path.exists(path):
           os.makedirs(path)
        f = open(path+title+str(cnt)+".png","wb")
        f.write(pic_data)
        f.close()
        print(pic)


webList = getList(url)
FinalList.append(url)
for i in webList:
   cnt = 0
   searchStr = 'href="'+ url_sa + '(.*?)"'
   tmp = re.search(searchStr, i)
   if tmp:
     ans  = tmp.group(1)
     W = recipeWeb+url_sa+ans
     if not W in FinalList:
        FinalList.append(W)


cnt = 0
for web_url in FinalList:
    cnt += 1
    GetPic(web_url, cnt)


### 回答1: Python3是一种广泛使用的编程语言,它提供了强大的数据处理、网络爬取和数据分析能力。如果需要爬取网页中的表格数据,Python3是一个非常好的选择。 首先,要爬取网页数据,需要使用Python3中的requests和BeautifulSoup模块。requests模块用来发送HTTP请求,获取网页源代码,而BeautifulSoup模块用来解析网页数据,从中提取所需的信息。 接下来,我们需要找到目标网页中的表格。可以通过使用Chrome浏览器的开发者工具(F12快捷键),在Element选项卡中查找表格的class、id或其他属性信息。 找到表格之后,我们可以使用BeautifulSoup模块中的find_all()方法,根据表格的标签和属性来查找并提取表格数据。通过遍历表格中的所有行和列,可以将表格数据保存到一个列表或字典中,方便后续处理和分析。 最后,要注意网络爬取的合法性和道德性。需要遵守网站的规定和协议,不要过度频繁地访问同一网站,不要损害网站的正常运营和用户权益。 总之,使用Python3爬取网页表格是一项非常有价值的技能,能够帮助我们更好地处理和分析网站上的数据,为我们的工作和研究带来更多的便利和效率。 ### 回答2: Python3是一种高级编程语言,具有易读易写的特点,而爬虫则是利用编程技术获取互联网上特定数据的过程,所以Python3非常适合用于爬取网页表格。 爬取网页表格的过程可以分为以下几个步骤: 1.导入所需的python模块:我们需要使用Python中的requests、BeautifulSoup、re、pandas等模块。其中requests模块可用于获取网页内容,BeautifulSoup可用于解析网页内容获取我们想要的表格,而re和pandas模块则可以将表格内容转化为合适的格式。 2.使用requests.get请求获取网页内容。 3.将获取的网页内容传给BeautifulSoup进行解析。在这一步中,我们需要找到我们需要爬取的表格所在的HTML标签以及表格内部所需要的各个字段,这些要素都可以用BeautifulSoup来获取。 4.设计正则表达式来获取表格中所要的数据。 5.使用pandas模块将获取到的数据转化为DataFrame格式,处理后可以将其保存为CSV等格式的文件。 总的来说,使用Python3爬取网页表格需要深入了解requests、BeautifulSoup、re、pandas等模块的使用方法,同时也要对HTML语法有一定的了解,才能够高效地解析出所需要的数据,并且能够对数据进行处理和统计分析。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值