爬虫学习记录(持续更新)

本文介绍了网络爬虫的基本概念,学习爬虫前的准备工作,包括Python语言、库函数及HTML结构的学习。详细阐述了爬虫架构,如URL管理器、网页下载器等组件,并通过一个千千音乐爬虫实例,展示了如何利用正则表达式和requests模块抓取网页数据。
摘要由CSDN通过智能技术生成

                                    爬虫学习记录(持续更新)    

1、爬虫:以前对爬虫的理解非常浅显,只是知道爬虫是一门非常高超的技术,甚至有点被它的神秘吓到。但是随着自己对计算机方面的深入学习,掌握了一些代码知识后,然后了解了爬虫的真实面目。(网络爬虫被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。

 

2、学爬虫之前需要准备的东西:

(1)工具:Python,原因是python是偏工具型的语言,里面包含大量的实用函数给我们调用(有直接访问网页的库函数)。语言简洁,易懂。

(2)对python中涉及到爬虫的库有一定的了解(譬如beautifulsoup模板,re正则表达式,request函数,字符串的处理)

(3)制作爬虫的最终目就是去用写出来的程序去批量地,高效的,快速的获取到网页源代码中有价值的数据和信息。因此,必须对.html文件的结构(包括css,URL,JavaScript)进行学习。做到能看懂网页源代码表达的意思并且进行分析,才能够去面对不同的爬取场景制作出不同的爬虫。

 

3、爬虫的架构:


调度器:

URL管理器:管理待抓取url集合和已抓取的URL集合

网页下载器:将互联网上url对应的网页下载到本地的工具

网页解析器:对下载的网页提取有价值的信息并进行产生新的URL集合

应用层面:

1.把提取的数据格式化输出,可用相应的工具对数据进行分析

2.从网上批量获取音频文件

。。。

 

4、设计一个实例爬虫基本的思路:

5、正则表达式

Rocky的博客

http://blog.sina.com.cn/u/2707072361

6、Beautiful Soup4.2.0

beautiful soup查询:

https://www.crummy.com/software/BeautifulSoup/bs4/doc/index.zh.html#id37

7、requests模块

requests模块查询:

Ranxf

https://www.cnblogs.com/ranxf/p/7808537.html

8、制作一个简单的“千千音乐”的爬虫

代码实现:

import re
import pprint
import requests
songids_url = 'http://music.taihe.com/artist/83632'     #千千音乐中网址批量下载,替换“83632”就行!每个歌手的主页url前面的字符都相同,后面的数字改变而已!
response = requests.get(songids_url)
response.encoding = response.apparent_encoding
html = response.text
songids = set(re.findall('a href="/song/(.*?)"',html)) #用正则表达式提取出当前网页所有的关键soongid字符串
for songid in songids:
     url_api = 'https://musicapi.taihe.com/v1/restserver/ting?method=baidu.ting.song.playAAC&format=json&songid={}'.format(songid)
     response = requests.get(url_api)                                                                     #单首下载,替换歌曲id即可
     data = response.json()   #返回json字典型
     file_link = data['bitrate']['file_link']  #通过key查找对应的value
     title = data['songinfo']['title']
     print(file_link,title)
     response = requests.get(file_link)
     with open(title+'.m4a','wb') as f:
          f.write(response.content)

# response.text 返回的是一个 unicode 型的文本数据
# response.content 返回的是 bytes 型的二进制数据
# 也就是说如果想取文本数据可以通过response.text 如果想取图片,文件,则可以通过 response.content

9、

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值