文计上机考试前的小小总结python
1.获取网页
1 import urllib.request as req 2 #用urllib获取网页 3 def getPage(url): 4 page = req.urlopen(url) 5 html = page.read().decode("gbk",errors="ignore") 6 return html
1 import requests 2 from bs4 import BeautifulSoup 3 #用requests获取网页 4 def getHtml(url): 5 r = requests.get(url) 6 r.encoding = "utf-8" 7 return r.text
2.用beautiful soup解析
1 def getlinks(): #获得十大链接 2 url = "https://bbs.pku.edu.cn/v2/home.php" 3 html = getHtml(url) 4 soup = BeautifulSoup(html, 'html.parser') 5 bigten = soup.find('section', attrs={'class':"topic-block big-ten"}) #找到十大标题 6 links= bigten.findAll('a', attrs={'href': re.compile(r'post\-read\.php\?bid=\d{2,4}')}) #获取所有的十大链接 7 # print(links[2]['href']) 8 # exit() 9 return links
获得的links是一个二维数组,即获取了所有满足条件的标签,在第二个方括号里输入各种类型,如'href',可获得标签的相应属性
2.lambda表达式
1 friend.sort(key=lambda item: item[1], reverse=True) # 按计数(第1个元素)进行排序
item是要排序的东西,item[i]是依据什么排,reverse = true表示从大到小排序
3.读取文件获得字符串
1 f = open(fileName, "r",encoding="utf-8") 2 content = "".join(list(f.readlines())) 3 f.close()
注意"".join的应用,双引号内表示用什么分割
4.正则表达式
1 patstr = '[a-zA-Z0-9]+@[a-zA-Z0-9]+\.[a-zA-Z0-9]+' 2 pat = re.compile(patstr) 3 email = pat.findall(content)
找到的email是个列表
5.如何转成列表
1 friend = list(relation[people].items())
注意.items()
6.用正则处理得到的html获得纯文本
1 def getText(html): 2 html = re.compile(r"<title>.*?</title>").sub("", html) 3 html = re.compile(r"<.*?>").sub("", html) 4 html = re.compile(r"&.*?;").sub("", html) #去掉奇怪的字母部分 5 html = re.compile(r"[纯文学网站首页,《红楼梦》目录,purepen.com]").sub("", html) 6 html = re.compile(r"上一回").sub("", html) 7 html = re.compile(r"下一回").sub("", html) 8 html = re.compile(r"(\s*?\n)+").sub("\n", html) #多个空行换成一个空行 9 return html