看完第二章了。由于缺少Web以及Flask相关知识储备,所以比较艰难。不过这都不是问题,我学习的目的就是要用,能让我深刻体会到这些知识的必要性,那么我也一定会再花时间把相关的课补上。班主任很负责任,还专门发了Flask专题学习视频给我们。第一章的作业被老师在群里表扬了,得了90分,还是蛮开心的。感觉自己私下学,和有老师带着学,最大的差别,第一是通过老师的点评和纠正,及时认识自己程序的不足,让程序更具有规范性;第二是不再盲目,可以按部就班,由浅入深的开展学习,同时掌握最为关键的——学习方法。
第二章的知识笔记:
遇到图片防盗链功能,请求头要加:
—Referer
—Cookie
—Host
Beautifulsoup4内置方法:
1. name,标签名称
1 # tag = soup.find(‘a‘) 2 # name = tag.name # 获取 3 # print(name) 4 # tag.name = ‘span‘ # 设置 5 # print(soup)
2. arrt,标签属性
1 # tag = soup.find(‘a‘) 2 # attrs = tag.attrs # 获取 3 # print(attrs) 4 # tag.attrs = {‘ik‘:123} # 设置 5 # tag.attrs[‘id‘] = ‘iiiii‘ # 设置 6 # print(soup)
3. children,所有子标签
1 # from bs4.element import Tag 2 # div = soup.find(‘body‘) 3 # v = div.children 4 # print(list(v)) #含换行符 5 # for ele in v: 6 If type(ele) == Tag: 7 print(ele) #去掉换行符
4. children,所有子子孙孙标签
1 # body = soup.find(‘body‘) 2 # v = body.descendants #返回所有标签,以及标签里的子标签
5. clear,将标签的所有子标签全部清空(保留标签名)
1 # tag = soup.find(‘body‘) 2 # tag.clear() 3 # print(soup)
6. decode,转换为字符串(含当前标签);decode_contents(不含当前标签)
1 # body = soup.find(‘body‘) 2 # v = body.decode() 3 # v = body.decode_contents() 4 # print(v)
7. encode,转换为字节(含当前标签);encode_contents(不含当前标签)
1 # body = soup.find(‘body‘) 2 # v = body.encode() 3 # v = body.encode_contents() 4 # print(v)
8. find,获取匹配的第一个标签
1 # tag = soup.find(‘a‘) 2 # print(tag) 3 # tag = soup.find(name=‘a‘, attrs={‘class‘: ‘sister‘}, recursive=True, text=‘Lacie‘) 4 # tag = soup.find(name=‘a‘, class_=‘sister‘, recursive=True, text=‘Lacie‘) 5 # print(tag)
9. find_all,获取匹配的所有标签
1 # tags = soup.find_all(‘a‘) 2 # print(tags) 3 4 # tags = soup.find_all(‘a‘,limit=1) #limit=1代表找几个 5 # print(tags) 6 7 # tags = soup.find_all(name=‘a‘, attrs={‘class‘: ‘sister‘}, recursive=True, text=‘Lacie‘) 8 # # tags = soup.find(name=‘a‘, class_=‘sister‘, recursive=True, text=‘Lacie‘) 9 # print(tags) 10 11 12 # ####### 列表,代表或的关系 ####### 13 # v = soup.find_all(name=[‘a‘,‘div‘]) #name=’a’或者name=’div’ 14 # print(v) 15 16 # v = soup.find_all(class_=[‘sister0‘, ‘sister‘]) 17 # print(v) 18 19 # v = soup.find_all(text=[‘Tillie‘]) 20 # print(v, type(v[0])) 21 22 23 # v = soup.find_all(id=[‘link1‘,‘link2‘]) 24 # print(v) 25 26 # v = soup.find_all(href=[‘link1‘,‘link2‘]) 27 # print(v) 28 29 # ####### 正则 ####### 30 import re 31 # rep = re.compile(‘p‘) 32 # rep = re.compile(‘^p‘) #以P开头 33 # v = soup.find_all(name=rep) 34 # print(v) 35 36 # rep = re.compile(‘sister.*‘) 37 # v = soup.find_all(class_=rep) #样式里含有sister开头的 38 # print(v) 39 40 # rep = re.compile(‘http://www.oldboy.com/static/.*‘) 41 # v = soup.find_all(href=rep) 42 # print(v) 43 44 # ####### 方法筛选 ####### 45 # def func(tag): 46 # return tag.has_attr(‘class‘) and tag.has_attr(‘id‘) #既具有class属性又有id属性 47 # v = soup.find_all(name=func) 48 # print(v) 49 50 # ## get,获取标签属性 51 # tag = soup.find(‘a‘) 52 # v = tag.get(‘id‘) 53 # print(v)
10. get_text,获取标签内部文本内容
1 # tag = soup.find(‘a‘) 2 # v = tag.get_text(‘id‘) 3 # print(v)
11. index,检查标签在某标签中的索引位置
1 # tag = soup.find(‘body‘) 2 # v = tag.index(tag.find(‘div‘)) 3 # print(v) 4 5 # tag = soup.find(‘body‘) 6 # for i,v in enumerate(tag): 7 # print(i,v)
12. is_empty_element,是否是空标签(是否可以是空)或者自闭合标签
判断是否是如下标签:‘br‘ , ‘hr‘, ‘input‘, ‘img‘, ‘meta‘,‘spacer‘, ‘link‘, ‘frame‘, ‘base‘
1 # tag = soup.find(‘br‘) 2 # v = tag.is_empty_element 3 # print(v)
13. select,select_one, CSS选择器
1 soup.select("title") 2 3 soup.select("p nth-of-type(3)") 4 5 soup.select("body a") #空格代表去它的子子孙孙里找;>a代表去下一级找 6 7 soup.select("html head title") 8 9 tag = soup.select("span,a") 10 11 soup.select("head > title") 12 13 soup.select("p > a") 14 15 soup.select("p > a:nth-of-type(2)") 16 17 soup.select("p > #link1") 18 19 soup.select("body > a") 20 21 soup.select("#link1 ~ .sister") # #号代表id=link1 22 23 soup.select("#link1 + .sister") 24 25 soup.select(".sister") 26 27 soup.select("[class~=sister]") 28 29 soup.select("#link1") 30 31 soup.select("a#link2") # a标签并且id=link1 32 33 soup.select(‘a[href]‘) # a标签并且具有href属性的 34 35 soup.select(‘a[href="http://example.com/elsie"]‘) 36 37 soup.select(‘a[href^="http://example.com/"]‘) #代表以这个网址开头的 38 39 soup.select(‘a[href$="tillie"]‘) # $代表以这个结尾的 40 41 soup.select(‘a[href*=".com/el"]‘)
原文:https://www.cnblogs.com/shajing/p/9276632.html