浏览器抓取网页(安装selenium环境的几种常见问题及解决办法!)
优采云 发布时间: 2021-09-22 11:39浏览器抓取网页(安装selenium环境的几种常见问题及解决办法!)
也可以来我的博客看看爬网谈话(一)使用selenium捕获
孟昕想要学习硒,安装是一个坑。还可以下载相关附件,可以参考Python安装Selenium环境。
1、使用firefox实例
from selenium import webdriver
import time
firefox = webdriver.Firefox() #初始化Firefox浏览器
url = 'https://www.zhihu.com'
firefox.get(url) #调用get方法抓取
time.sleep(10) #10s用于观察
with open('zhihu.html','w',encoding='utf-8') as f:
f.write(firefox.page_source) #保存网页到本地
firefox.quit()
上面的图片是一个名为Firefox的网页。使用page_source可以获得Web源代码,因为请求和请求是相同的,不必添加标题。
2、对s s配置配置的p配置
简单地说,使用selenium修改浏览器相关的参数,使浏览器没有加载js,没有图片,会增加大量速度。代码如下:
from selenium import webdriver
import time
firefox_profile = webdriver.FirefoxProfile()
firefox_profile.set_preference("permissions.default.stylesheet",2) #禁用样式表文件
firefox_profile.set_preference("permissions.default.image",2) #不加载图片
firefox_profile.set_preference("javascript.enabled",False) #禁止JS
firefox_profile.update_preferences() #更新设置
firefox = webdriver.Firefox(firefox_profile)
url = 'https://www.zhihu.com'
print("开始加载")
t_start = time.time()
firefox.get(url)
t_end = time.time()
print("加载时间是:",t_end-t_start)
time.sleep(10)
firefox.quit()
加载页面,如下所示
firefox_profile.set_preference("permissions.default.stylesheet",1)
firefox_profile.set_preference("permissions.default.image",1)
firefox_profile.set_preference("javascript.enabled",True)
更改2到1,错误的更改为true,请参阅
返回普通网页
4s和10s差异,它将体现在攀登多个网页。
请注意,页面加载与实际的网络环境有关。
3、图图
禁用js,页面加载是否更快,可以在每种模式下运行相同的次数,然后取得平均值。
使用matplotlib绘图
from selenium import webdriver
import time
import matplotlib.pyplot as plt
def performance(n,css_val,image_val,js_val):
loading_time = []
for i in range(0,n):
firefox_profile = webdriver.FirefoxProfile()
firefox_profile.set_preference("permissions.default.stylesheet",css_val)
firefox_profile.set_preference("permissions.default.image",image_val)
firefox_profile.set_preference("javascript.enabled",js_val)
firefox_profile.update_preferences()
firefox = webdriver.Firefox(firefox_profile)
url = 'https://zhangslob.github.io/'
print("开始加载")
t_start = time.time()
firefox.get(url)
t_end = time.time()
print("加载时间是:",t_end-t_start)
loading_time.append(t_end-t_start)
print('=========================')
#time.sleep(10)
firefox.quit()
return [x for x in range(1,n+1)],loading_time
if __name__ == '__main__':
x1_lst,y1_lst = performance(10,1,1,True)
x2_lst,y2_lst = performance(10,2,2,False)
ava_y1 = sum(y1_lst)/len(x1_lst)
ava_y2 = sum(y2_lst)/len(x2_lst)
plt.title("Compare loading time")
plt.xlabel("Test number")
plt.ylabel("Loading time")
plt.plot(x1_lst,y1_lst,'go:',label=str(ava_y1))
plt.plot(x2_lst,y2_lst,'rs:',label=str(ava_y2))
plt.legend()
plt.show()
我将URL更改为我的博客:库克斯的博客,这更加符合实用。
绿线是正常的网页,红色是修改的
为了确保准确,将其更改为其他URL,但为什么?
问题:
为什么可以禁用js,不要加载图片,时间和原创差异?