当前位置:   article > 正文

python自动化编程--web抓取信息_python webbrowser模块

python webbrowser模块

目录

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

四.selenium模块控制浏览器

1.启动selenium控制的浏览器

2.在页面寻找元素

3.点击页面

4.点击浏览器按


一.webbrowser模块

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

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

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

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

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

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

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

二.reguests模块从web下载文件

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

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

requeste模块的get()函数可以接受一个要下载的URL字符串,requests对象的status_code属性可以检查对这个页面的请求是否成功,如果该值等于requests.code.ok表示请求成功

  1. import requests
  2. res=requests.get('https://www.csdn.net/')
  3. if res.status_code==requests.codes.ok:
  4. len_end=len(res.text)
  5. print(res.text[:len_end])
  6. else:
  7. print('请求错误!')

请求csdn页面,如果请求成功就下载页面代码

2.raise_for_status()检查错误

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

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

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

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

向open()函数第二个参数传入‘wb’表示用二进制形状打开文件,然后才可以用write()方法写入磁盘

iter_conten()方法在循环的每次迭代中返回一段内容

  1. import requests
  2. res=requests.get('https://www.csdn.net/')
  3. file=open('C://Users//myun//Desktop//python.txt','wb')
  4. for chunk in res.iter_content():
  5. file.write(chunk) #每一次迭代写入一段内容
  6. file.close()

三.BeautifulSoup模块解析HTML内容

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

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

1.从HTML创建一个BeatifulSoup文件 

bs4.BeautifulSoup()函数的调用要传入一个字符串,其中包含要解析的HTML文件

  1. import requests
  2. import bs4
  3. res=requests.get('https://www.csdn.net/')
  4. res.raise_for_status()
  5. htmltext=open('C://Users//myun//Desktop//soup.html')
  6. Soup_text=bs4.BeautifulSoup(htmltext) #创建Beautiful文件

下载一个html文件,然后传递给soup.html文件中

2.select()方法寻找元素

select选择大部分css样式:

传递给select()方法的选择器将匹配
soup.select('div')所有名为<div>的元素
soup.select('#author')带有id属性为author的元素
soup.select('.notice')所有CSS class属性名为notice的元素
soup.select('div span')

所有在<div>元素之内的<span>元素

soup.select('div > span')所有直接在<div>元素内的<span>元素,中间没有其他元素
soup.select('input[name]')所有名为<input>,并有一个name属性,其值=无所谓的元素
soup.select('input[type="button"]')所有名为<input>,并有一个type属性,其值为buttond的元素

select()方法每一次匹配将返回一个Tag对象的列表,Tag值可以传递给str()函数,显示它代表的HTML标签,也可以有attrs属性将Tag使用html属性作为一个字典

  1. import requests
  2. import bs4
  3. souphtml=requests.get('https://www.csdn.net/')
  4. Soup_text=bs4.BeautifulSoup(souphtml.text)
  5. elems=Soup_text.select('.headswiper-item')
  6. print(len(elems))
  7. print(str(elems[1])) #显示它代表的html标签
  8. print(elems[0].attrs)

3.get获取元素属性

Tag对象的get()方法可以获取元素的属性

  1. mport requests
  2. import bs4
  3. souphtml=requests.get('https://www.csdn.net/')
  4. Soup_text=bs4.BeautifulSoup(souphtml.text)
  5. elems=Soup_text.select('div')[0]
  6. print(str(elems))
  7. print(elems.get('id'))
  8. print(elems.attrs)
  9. '''<div id="toolbarBox" style="min-height: 48px;"></div>
  10. toolbarBox
  11. {'id': 'toolbarBox', 'style': 'min-height: 48px;'}'''

例如:选择第一个div元素,将属性名为id’打印出来

四.selenium模块控制浏览器

selenium模块让python直接控制浏览器

1.启动selenium控制的浏览器

导入selenium模块为from selenium import webdriver,然后通过webdriver控制浏览器

例如:控制edge浏览器打开csdn

  1. from selenium import webdriver
  2. browser=webdriver.Edge()
  3. browser.get('https://www.csdn.net/')

2.在页面寻找元素

webdriver对象中有两大类方法来寻找页面元素,find_element_*方法返回一个WebElement对象,find_elements_*方法返回WebElement_*对象的列表,包含所有页面中匹配的元素

find_elememt_*和find_elements_*方法在变量browser中保存的WebDriver对象上调用

方法名返回的WebElement对象/列表
browser.find_element_by_class_name(name)
browser.find_elements_by_class_name(name)使用CSS类name的元素
browser.find_element_by_css_selector(selector)
browser.find_elements_by_css_selector(selector)匹配CSS selector的元素
browser.find_element_by_id(id)
browser.find_elements_by_id(id)匹配id属性的元素
browser.find_element_by_link_text(text)
browser.find_elements_by_link_text(text)匹配提供的text的<a>元素
browser.find_element_by_partial_link_text(text)
browser.find_elements_by_partial_link_text(text)包含提供的text的<a>元素
browser.find_element_by_name(name)
browser.find_elements_by_name(name)匹配name属性值的元素
browser.find_element_by_tag_name(name)
browser.find_elements_by_tag_name(name)匹配标签name的元素

有了WebElement对象,就可以读取其中的属性,或调用其中的方法

WebElenment的属性和方法
属性或方法描述
tag_name标签名
get_attribute(name)该元素name属性的值
text该元素的文本
clear()对于文本字段或文本区域元素,清除其输入的内容
is_displayde()如果该元素可见返回true,否则返回false
is_enabled()对于输入的元素,如果该元素启用返回true,否则返回false
is_selected()对于复选框或单选框,如果该元素被选中返回true,否则返回false
location一个字典,包含‘x’和‘y’,表示元素在页面上的坐标

3.点击页面

find_elements_*和find_element_*返回的WebElement对象有一个click()方法,可以模拟鼠标的点击操作,实现链接跳转,点击按钮的功能

4.点击浏览器按钮

利用以下方法可以模拟点击浏览器按钮:

browser.back()点击“返回”按钮

browser.forward()点击“前进”按钮

browser.refresh()点击“刷新”按钮

browser.quit()点击“关闭窗口”按钮

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/139736
推荐阅读
相关标签
  

闽ICP备14008679号