以酷狗音乐的榜单音乐信息为例,我们要获取源代码中的部分数据:
查看源代码,最后的一部分数据就是我们要获取的数据:
我们可以看到,要获取的数据属于 script 标签中的内容,而且是部分内容,所以这里我们需要先获取指定的script标签中的内容,然后再从其中提取出我们需要的那部分数据,所以在这里我们使用 BeautifulSoup模块 和 正则表达式
首先导入模块
from bs4 import BeautifulSoupimport requestsimport re
获取网页源代码
url = "https://www.kugou.com/yy/rank/home/1-23784.html?from=rank"html = requests.get(url).text
使用BeautifulSoup模块获取指定标签及内容
soup = BeautifulSoup(html,features="lxml")# 获取最后一个 script 标签及其内容script = soup.find_all('script')[-1]
进行到这一步我们输出一下获取到的数据
此时获取到的是最后一个script标签中的所有内容,所以我们还需要进一步提取
使用正则表达式提取我们想要的数据
# 查找符合正则表达式的字符串 此时script变量为bs4格式 我们需要将其转化为字符串格式info = re.findall(r'\[.*\]',str(script))
再次输出我们获取到的数据
除了我们需要的数据,还有两条符合正则表达式的数据也被提取出来了,所以我们只需要使用列表下标的方式获取我们想要的数据就可以了
# 获取列表中下标为1的数据info = re.findall(r'\[.*\]',str(script))[1]
输出看一下
成功提取出我们想要的数据
完整代码
from bs4 import BeautifulSoupimport requestsimport re
url = "https://www.kugou.com/yy/rank/home/1-23784.html?from=rank"html = requests.get(url).text# print(html)soup = BeautifulSoup(html,features="lxml")# 获取最后一个script元素script = soup.find_all('script')[-1]# print(script)# print(type(script))# 查找符合正则表达式的字符串 此时script变量为bs4格式 我们需要将其转化为字符串格式info = re.findall(r'\[.*\]',str(script))[1]print(info)# 替换符合正则表达式的字符串# info = re.sub(r'\[|\]',"",info)# print(type(info))# 分割符合正则表达式的字符串# info = re.split(r'\},\{',info)# print(info)
MainActivity代码public class Html5VideoAutoPlay extends Activity {
WebView webview = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentVi
hadoop wordcount学习总结需求 实现对文本文件中各个单词数量的统计,文本文件的内容在hdfs文件系统的/srcdata目录下,文件名称为test.txt,文件内容如下:wo shi yi
zhi xiao yang
mao wo e e e
e heng heng heng 输出文件夹为output文件夹。 程序 在e
Mysql默认事务隔离级别是:REPEATABLE-READ--查询当前会话事务隔离级别
mysql> select @@tx_isolation;+-----------------+
| @@tx_isolation |
+-----------------+
| REPEATABLE-READ |
+-----------------+
1 row in set (0.00sec)