Python慕课 MODULE 02: 数据获取与表示之第三周 数据获取与表示3.1~3.2

南京大学用Python玩转数据慕课学习整理

3.1

1、文件用完后养成主动关闭文件的习惯
2、Python中二进制文件可以不使用缓冲,但是文本文件必须使用缓冲
3、with open(‘firstpro.txt’,‘w’) as f:
f.write(‘Hello, World!’)
既写文件,又读文件,用’r+’
4、open语句读完文件自动关闭,所以不用再额外写上close语句了
5、readlines读取多行数据,返回一个列表。
Python在读取文件时并不删除换行符
6、读写时都有文件指针。
seek函数可以移动文件指针:
file_obj.seek(offset,whence=0)
在文件中移动指针,从whence(0表示文件头部,1表示当前位置,2表示文件尾部)偏移offset个字节 。whence参数可选,默认值为0

3.2

1、
抓取:requests第三方库
基本方法:get
r = requests.get(‘https://api/github.com/user’) (把要请求页面的url放进去)
r.status_code(查看状态码,若状态码是200表示一切正常)
抓取一个网页前查看其有没有爬虫协议,看有没有被禁止:robots.txt
如豆瓣的:https://www.douban.com/robots.txt
re.text属性:自动推测文本形式并进行解码

有些网站会对http请求的Headers的User-Agent进行检测,需将headers信息传递给get函数的headers参数,例如豆瓣最近也有了此要求,例如知乎,直接访问会返回400,加上headers参数后可正确返回:

re = requests.get(‘https://www.zhihu.com’)
re.status_code
400

headers = {“User-Agent”: “Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.83 Safari/535.11”}
re = requests.get(‘https://www.zhihu.com’, headers = headers)
re.status_code
200
反爬的策略还有很多,需要逐渐熟悉

2、解析:
BeautifulSoup库:
可以从HTML或XML文件中提取数据的Python库
评论的等级:
比较复杂的模式适合用正则表达式模块进行处理

先导入:from bs4 import BeautifulSoup
对HTML最常用的解析器是LXML,此解析器速度较快、容错能力较强

用BeautifulSoup函数传入这个字符串:
markup = ‘

The Little Prince


soup = BeautifulSoup(markup,‘lxml’)

BeautifulSoup对象有四种:
Tag、NavigableString、BeautifulSoup和Comment
Tag就是HTML或XML文档中的标签,如上个字符串中的,对文字内容做一些修饰
NavigableString是tag当中的字符串,如The Little Prince
comment是NavigableString的一个子类

用标签可以得到它的内容:
soup.b
Out[9]: The Little Prince

find_all方法:
寻找所有标签内容

豆瓣网页整理:
获得一个BeautifulSoup对象soup:
soup = BeautifulSoup(r.text,‘lxml’)
通过find_all方法寻找评论所在的行:
pattern = soup.find_all(‘span’,‘short’)

评论行:
狐狸告诉小王子的秘密是:用心去看才看得清楚;是分离让小王子更思念他的玫瑰;爱就是责任。

标签span,属性short
find_all方法返回一个列表,遍历列表,返回每项的短评
for item in pattern:
print(item.string)

获取评分:找字符串中间的一个字符串:用.*来表示
3、爬虫读取豆瓣:
headers = {“User-Agent”: “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36”}

r = requests.get(‘https://book.douban.com/subject/1084336/comments/’,headers=headers)

r.status_code
Out[102]: 200

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值