目录
一.webbrowser模块
1.sys.argv处理命令行参数
2.pypeclip.paste()处理剪贴板内容
二.reguests模块从web下载文件
1.用requests.get()函数下载一个网页
2.raise_for_status()检查错误
3.将下载的文件保存到硬盘
三.BeautifulSoup模块解析HTML内容
1.从HTML创建一个BeatifulSoup文件
2.select()方法寻找元素
3.get获取元素属性
webrowser是python自带的模块,该模块的open()函数可以启动一个浏览器,打开指定的URL网址
import webbrowser
webbrowser.open('https://www.csdn.net/')
sys模块用于读入可能的命令行参数,sys.argv变量保存了程序文件名和命令行参数的列表
如果没有参数,可以将要访问的地址保存到剪贴板,然后通过pypeclip.paste()获取地址赋值给URL
import pyperclip
import webbrowser
dress=pyperclip.paste() #读取剪贴板内容
webbrowser.open(dress)
requests模块可以从web下载想要的内容,但要调用这个模块要先pip install requests安装
requeste模块的get()函数可以接受一个要下载的URL字符串,requests对象的status_code属性可以检查对这个页面的请求是否成功,如果该值等于requests.code.ok表示请求成功
import requests
res=requests.get('https://www.csdn.net/')
if res.status_code==requests.codes.ok:len_end=len(res.text)print(res.text[:len_end])
else:print('请求错误!')
请求csdn页面,如果请求成功就下载页面代码
requests属性的status_code属性可以检查页面请求是否正确,还有一个更简单的方法,就是在requests对象上调用raise_for_status()方法
所以如上的代码可以表示为:
import requests
res=requests.get('https://www.csdn.net/')
try:res.raise_for_status()
except Exception:print('请求错误!')
向open()函数第二个参数传入‘wb’表示用二进制形状打开文件,然后才可以用write()方法写入磁盘
iter_conten()方法在循环的每次迭代中返回一段内容
import requests
res=requests.get('https://www.csdn.net/')
file=open('C://Users//myun//Desktop//python.txt','wb')
for chunk in res.iter_content():file.write(chunk) #每一次迭代写入一段内容
file.close()
如果想复习HTML知识可以:html复习
BeautifulSoup模块用于从HTML页面提取信息,它的名称是bs4,表示BeautifulSoup第四版,通过pip install BeautifulSoup4安装,但导入时使用import bs4
bs4.BeautifulSoup()函数的调用要传入一个字符串,其中包含要解析的HTML文件
import requests
import bs4
res=requests.get('https://www.csdn.net/')
res.raise_for_status()
htmltext=open('C://Users//myun//Desktop//soup.html')
Soup_text=bs4.BeautifulSoup(htmltext) #创建Beautiful文件
下载一个html文件,然后传递给soup.html文件中
select选择大部分css样式:
| 传递给select()方法的选择器 | 将匹配 |
| soup.select('div') | 所有名为 的元素 |
| soup.select('#author') | 带有id属性为author的元素 |
| soup.select('.notice') | 所有CSS class属性名为notice的元素 |
| soup.select('div span') | 所有在 元素之内的元素 |
| soup.select('div > span') | 所有直接在 元素内的元素,中间没有其他元素 |
| soup.select('input[name]') | 所有名为,并有一个name属性,其值=无所谓的元素 |
| soup.select('input[type="button"]') | 所有名为,并有一个type属性,其值为buttond的元素 |
select()方法每一次匹配将返回一个Tag对象的列表,Tag值可以传递给str()函数,显示它代表的HTML标签,也可以有attrs属性将Tag使用html属性作为一个字典
import requests
import bs4
souphtml=requests.get('https://www.csdn.net/')
Soup_text=bs4.BeautifulSoup(souphtml.text)
elems=Soup_text.select('.headswiper-item')
print(len(elems))
print(str(elems[1])) #显示它代表的html标签
print(elems[0].attrs)
Tag对象的get()方法可以获取元素的属性
mport requests
import bs4
souphtml=requests.get('https://www.csdn.net/')
Soup_text=bs4.BeautifulSoup(souphtml.text)
elems=Soup_text.select('div')[0]
print(str(elems))
print(elems.get('id'))
print(elems.attrs)
'''
toolbarBox
{'id': 'toolbarBox', 'style': 'min-height: 48px;'}'''
例如:选择第一个div元素,将属性名为id’打印出来