python自动化编程--web抓取信息

目录

一.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网址

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') 所有名为<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属性作为一个字典

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)
'''<div id="toolbarBox" style="min-height: 48px;"></div>
toolbarBox
{'id': 'toolbarBox', 'style': 'min-height: 48px;'}'''

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

四.selenium模块控制浏览器

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

1.启动selenium控制的浏览器

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

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

from selenium import webdriver
browser=webdriver.Edge()
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()点击“关闭窗口”按钮

猜你喜欢

转载自blog.csdn.net/weixin_63009369/article/details/128650148