1.URLLIB
from urllib import request
print(request.urlopen(url).read().decode("utf-8"))
2.REQUESTS
import requests
from charset_normalizer import detect
response = requests.get(url, headers={})
response.encoding = detect(response.content)['encoding']
print(response.text)
3.RE
import re
reg = re.compile(rule)
re.findall(reg, str)
技巧:统一复制下来需要正则字段,去异存同,去掉用.*?
代替,保存用(.*?)
4.BS4
构建bs4对象:
soup = BeautifulSoup(html, 'html.parser')
1.从xx范围内查找第一个yy标签 xx.yy
soup.title / soup.h1 / soup.p / soup.p.b
2.取出标签的文本内容
xx.text 跨标签文本 soup.title.text
xx.string 单标签文本 soup.p.text
3.取出标签的属性内容
# 一次性取出所有属性 xx.attrs 得到一个所有属性与值组成字典
xx.attrs['name']
4.精准查找指定标签,通过tagname,id,class,attr,text查找标签
xx.find()第一个符合条件标签
1.xx.find('div') # 通过tagName
2.xx.find(id='yy') # 通过id
3.xx.find(class_='yyy') # 通过class
4.xx.find(text='div文本') # 通过其他属性 包括id class_ 通过文本内容
5.精准查找指定标签
xx.find_all() # 多个标签,返回list对象
xx.find_all('p', class_='title', id='yy')
lis = soup.find(id='ultwo').find_all('li')
[li.text for li in lis]
6.根据上下级关系(父子关系)查找标签对象
xx.parent # 找父元素
xx.children # 找子元素
7.通过兄弟关系查找标签对象
xx.previous_sibling # xx前面对象
xx.next_sibling # xx后面对象
xx.previous_siblings # xx前面多个对象
8.多个元素同时查找
xx.find_all(['a', 'b'])
9.正则查询
import re
xx.find_all(class_=re.compile('sis\W+'))
soup.find_all(class_=['title', re.compile('sis\w+')])
10.是否递归查找
xx.find_all(.., recursive=True/False) # 默认递归
11.控制查找个数
xx.find_all(..,limit=int) # limit 参数
5.SELENIUM
from selenium import webdriver # 导入模块
1.打开浏览器
driver = webdriver.Chrom()
2.访问网址
driver.get(url)
3.查找网页标签内容
xx.find_element_by_id()
xx.find_elements_by_tag_name() # 多个对象,返回列表
4.输入文字语法
xx.send_keys(文本)
5.点击的语法
xx.click()
6.滚动页面语法
driver.execute_script("windows.scrollby(x, y)")
7.获取标签对象的文本和属性
xx.text
xx.get_attribute('属性名称') # 返回属性值
8.最大最小化窗口 以及窗口处理
driver.maxmize_window() # 最大化
driver.set_window_size(宽, 高) # 指定大小
driver.get_window_size() # 获取大小
9.窗口句柄
driver.window_handles
10.关闭当前窗口
driver.close()
11.内嵌网页,切换iframe层级
driver.switch_to.frame(xxid/name)
12.刷新页面
driver.refresh()
13.键盘事件
from selenium.webdriver.common.keys import Keys
xx.send_keys(Keys.NUMPAD1)
xx.send_keys(Keys.ENTER)
14.页面等待
显示等待:指定内容加载开始下一步
隐式等待:固定时间开始下一步
driver.implicitly_wait(10) == time.sleep(10)
15.获取网页解析后页面代码
driver.page_source
16.退出浏览器
driver.quit()