selenium库
-
Selenium [1] 是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。
https://blog.csdn.net/liuuil4421640/article/details/79001429
https://blog.csdn.net/baidu_36831253/article/details/79838740 -
编码和解码
python的中字符转码是一件很头疼的事情,本来期望结果输出的是中文,结果来一段像这样\xe4\xbd\xa0\xe5\xa5\xbd像是乱码的字符串>>> u = ‘中文’ # 指定字符串类型对象u
>>> str1 = u.encode('gb2312') # 以gb2312编码对u进行编码,获得bytes类型对象
>>> print(str1)
b'\xd6\xd0\xce\xc4'
>>> str2 = u.encode('gbk') # 以gbk编码对u进行编码,获得bytes类型对象
>>> print(str2)
b'\xd6\xd0\xce\xc4'
>>> str3 = u.encode('utf-8') # 以utf-8编码对u进行编码,获得bytes类型对象
>>> print(str3)b'\xe4\xb8\xad\xe6\x96\x87'
>>> u1 = str1.decode('gb2312') # 以gb2312编码对字符串str进行解码,获得字符串类型对象
>>> print('u1')
'中文'
>>> u2 = str1.decode('utf-8') # 报错,因为str1是gb2312编码的
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd6 in position 0: invalid continuation byte
- 实现页面的自动加载的小例子–下载炉石传说的卡片
from selenium import webdriverfrom urllib
import request
import time
import os
from bs4 import BeautifulSoup
#测试webdriver 是否正常运行
def xiazai1():
url = 'http://cha.17173.com/hs/list'
#加载浏览器的驱动器
driver = webdriver.Chrome(executable_path='D:\\chromedriver.exe')
#打开浏览器,访问网站
driver.get(url)
for i in range(1):
#执行js代码让滚动条向下滚动到底部
driver.execute_script('window.scrollTo(0,document.body.scrollHeight);')
#每一次滚动都要休眠一段:减缓加载的速度,防止被屏蔽,网速也加载不了这么快
time.sleep(2)
#获取页面资源
content = driver.page_source
#content 为 str类型,通过utf-8进行编码获得byte类型,然后以二进制类型写入文件
file =open('lushi.html','w',encoding='utf-8')
file.write(content)
file.close()
# xiazai1()
#下载炉石传说的所有的卡牌
def xiazai2():
#查看路径是否存在
path ='D:\\LuShi'
if os.path.exists(path):
pass
else:
os.makedirs(path)
#没有指定编码格式会报gbk解析错误
file = open('lushi.html','r',encoding='utf-8')
content = file.read()
file.close()
soup = BeautifulSoup(content,"html.parser")
games_list = soup.select('.games_list')[0]
lis=games_list.find_all('li')
for item in lis:
img=item.find('img')
url = img['src']
name = url.split('/')[-1].split('?')[0]
request.urlretrieve(url,path+'\\'+name)
xiazai2()