python自动化编程--web抓取信息
创始人
2024-05-10 10:04:46

目录

一.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获取元素属性


一.webbrowser模块

webrowser是python自带的模块,该模块的open()函数可以启动一个浏览器,打开指定的URL网址

import webbrowser
webbrowser.open('https://www.csdn.net/')

1.sys.argv处理命令行参数

sys模块用于读入可能的命令行参数,sys.argv变量保存了程序文件名和命令行参数的列表

 2.pypeclip.paste()处理剪贴板内容

 如果没有参数,可以将要访问的地址保存到剪贴板,然后通过pypeclip.paste()获取地址赋值给URL

import pyperclip
import webbrowser
dress=pyperclip.paste()  #读取剪贴板内容
webbrowser.open(dress)

二.reguests模块从web下载文件

requests模块可以从web下载想要的内容,但要调用这个模块要先pip install requests安装

1.用requests.get()函数下载一个网页

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页面,如果请求成功就下载页面代码

2.raise_for_status()检查错误

requests属性的status_code属性可以检查页面请求是否正确,还有一个更简单的方法,就是在requests对象上调用raise_for_status()方法

所以如上的代码可以表示为:

import requests
res=requests.get('https://www.csdn.net/')
try:res.raise_for_status()
except Exception:print('请求错误!')

3.将下载的文件保存到硬盘

向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()

三.BeautifulSoup模块解析HTML内容

如果想复习HTML知识可以:html复习

BeautifulSoup模块用于从HTML页面提取信息,它的名称是bs4,表示BeautifulSoup第四版,通过pip install BeautifulSoup4安装,但导入时使用import bs4

1.从HTML创建一个BeatifulSoup文件 

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文件中

2.select()方法寻找元素

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)

3.get获取元素属性

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’打印出来

相关内容

热门资讯

脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...