Python学习笔记
image.png
image.png
image.png
2019-1-5
1. 什么时候在HTML里面找需要爬取的内容,什么时候在XHR里面找?
先打开网页HTML源码,看里面有没有数据;如果没有,那么就在XHR里面找
2. 如何在XHR 里面找到数据?
找到size,然后按照大小排列。 因为是传输数据,里面的内容肯定多,所以应该排在前面。
image.png3. 写出了代码,一下子把李宗盛的一百首歌曲,都能爬下来。开心。
同时,也收获了一种解决问题的方式:把问题细分到最小。
如果一下子让写爬李宗盛的100首歌曲,感觉头大了。 可以细分,先实现爬取一页,然后再实现爬取10页。
import requests,json
for i in range(1,6):
url = 'https://c.y.qq.com/soso/fcgi-bin/client_search_cp?ct=24&qqmusic_ver=1298&new_json=1&remoteplace=txt.yqq.song&searchid=67405590478770516&t=0&aggr=1&cr=1&catZhida=1&lossless=0&flag_qc=0&p=' + str(i) + '&n=20&w=%E6%9D%8E%E5%AE%97%E7%9B%9B&g_tk=385283523&loginUin=3002439522&hostUin=0&format=json&inCharset=utf8&outCharset=utf-8¬ice=0&platform=yqq.json&needNewCode=0'
#print(url)
res = requests.get(url)
jsonres = json.loads(res.text)
music = jsonres['data']['song']['list']
for x in music:
print('歌曲名:' + x['name'])
print('专辑名:' + x['album']['name'])
print('播放时长' + str(x['interval']) + '秒')
print('播放链接:https://y.qq.com/n/yqq/song/' + x['mid'] +'.html\n\n' )
5. 对于Python新手,最难的地方及解决方法
最难的莫过于,边学边忘。昨天刚学,今天就忘了。
解决对策:任何技能,都和练武术一个道理:基本功要反复的练习,直至形成肌肉记忆。这样,真正和人打的时候,不用想下一步用哪招,是本能的做出决定。
迁移到学Python小课上,课堂上所讲的内容,就是基本功,要反复练习。这些是最基本的东西。把这些熟练掌握后,才能融会贯通。
2018-12-30
问题1.[Errno 22] Invalid argument: '<sanguoyanyi>.txt'
image.png问题解决:不能用<>去命名文件。 修改成《》或是不用符号就可以了。
出现问题的原因:很可能是路径的问题。
2018-12-25
1. getText()
作用:取出标签里的文本
用法:
#example
print(link[0].getText())
2018-12-22
1. pyperclip.copy() and pyperclip.paste()
作用: pyperclip.copy(): 把括号里的东西,复制到剪切板;
pyperclip.paste():把剪切板的东西,复制下来,赋值给变量
用法:
import pyperclip
pyperclip.copy()
name = pyperclip.paste()
2.用os模块打开迅雷
水形物语
import os
downUrl='thunder://QUFlZDJrOi8vfGZpbGV8TGF3LkFiaWRpbmcuQ2l0aXplbi4yMDA5LuWuiOazleWFrOawkS7lj4zor63lrZfluZUuSFItSERUVi5BQzMuMTAyNHg1NzYueDI2NC5ta3Z8MTkzNjMyNjEwM3wyMjk1ODQ1MjlCRDQ2NUZDQjUxOEFFQjY0NTE4QjQxNXxoPUMyWEpLRk0yQ1BORkZESDJHT1NQNEk3WEQ2V09RNzREfC9aWg=='
os.system("\"C:\Program Files\Thunder Network\Thunder\Program\ThunderStart.exe\" -StartType:DesktopIcon %s"%downUrl)
2018-12-21
1.报错:'method' object is not subscriptable
image.png解法:
第九行出现了2个错误:1.get后面是圆括号 2.“+”号前后要有空格
正确写法:
finallink = 'https://www.ygdy8.com' + link[0].get('href')
2. 报错:'str' object has no attribute 'text'
image.png原因:因为前面的已经把编码解码成gbk了,所以,下一步不需要再用text
3. requests.content 和 text的区别
content 获取的是二进制值,可用于图片,音频,文件等
text 获取的是文本,Unicode。
python requests的content和text方法的区别
2018-12-18
第19关 美味的汤(下)——BeautifulSoup模块(下)
1. bs4 是什么东东?
bs4 全称是 BeautifuSoup, 4是指第四个版本
作用:解析网页,在网页中获取想要的数据
用法:import bs4
2. urllib是什么?
urllib是Python自带的一个标准库,无需安装
作用:向服务器提请求。经常使用的是request
用法: from urllib.request import quote
3.gbk 是什么东东?
是一种字符编码的格式。
- ASCII 编码,最初由美国人创立的数据编码格式,不支持中文;
2.GBK 和GB2312: 支持了中文,GBK是GBK2312的升级版。目前有部分中文网站是gbk编码。
3.Unicode:占用空间大,实用性强。
3.quote()是什么东东?
在标准的URL中,只能使用部分ASCII字符,不允许使用中文字符。
作用:那么在使用爬虫的时候,用这个命令把文本变成url接受的字符
用法:
urlmovie = 'http://s.ygdy8.com/plus/so.php?kwtype=0&searchtype=title&keyword='+quote(gbkmovie)
4. 代码gbkmovie=movie.encode('gbk')
为什么要改变成gbk,而不是utf-8
因为阳光电影这个网站是用gb2312编码的,所有要把编码变成这个网站支持的方式。
如果爬百度,它的编码是utf-8,那么需要把编码转换成utf-8
5.gbk 和 utf-8有什么优劣?
utf-8 国际编码,通用性好;gbk 国家编码,通用性差,但对中文的支持更友好。
参考:网页编码GBK和UTF-8有什么区别?到底哪个好?