SeleniumMiddleware和隐式等待和设置图片不加载
2017-11-20 16:21
405 查看
https://www.aqistudy.cn/historydata/monthdata.php?city=%E6%B7%B1%E5%9C%B3
上面这个网站的数据都是动态加载的所以使用selenium中间件来实现动态加载避免自己来分析js代码,设置图片不加载提高效率,设置隐式等待来实现需要的数据加载完成后程序的快速向下运行, 设置随机请求头绕反爬机制,中间件部分代码如下
上面这个网站的数据都是动态加载的所以使用selenium中间件来实现动态加载避免自己来分析js代码,设置图片不加载提高效率,设置隐式等待来实现需要的数据加载完成后程序的快速向下运行, 设置随机请求头绕反爬机制,中间件部分代码如下
from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.common.desired_capabilities import DesiredCapabilities from fake_useragent import UserAgent from scrapy.http import HtmlResponse class SeleniumSpiderMiddleware(object): def process_request(self, request, spider): # 随机请求头 ua = UserAgent() ua_use = ua.random # 设置请求头 dcap = dict(DesiredCapabilities.PHANTOMJS) # 图片不加载 SERVICE_ARGS = ['--disk-cache=true', '--load-images=false'] dcap["phantomjs.page.settings.userAgent"] = (ua_use) # 请求头生效, 图片不加载生效 driver = webdriver.PhantomJS(desired_capabilities=dcap, service_args=SERVICE_ARGS) # 请求的url是这个 url = request.url driver.get(url) # 设置等待所有的td标签加载完成 locator = (By.CSS_SELECTOR, 'tbody > tr > td') WebDriverWait(driver, 10).until(EC.presence_of_all_elements_located(locator)) # 截图看是否有图片加载 driver.save_screenshot('aqi.png') body = driver.page_source driver.close() # body必须为bytes类型 response = HtmlResponse(url=url, request=request, encoding='utf8', body=body.encode()) # 直接return response 直接将response返回到engine不会重新下载 return response
相关文章推荐
- IOS基础之设置APP的名字、设置图标、添加等待加载时的图片
- IOS基础之设置APP的名字、设置图标、添加等待加载时的图片
- IOS基础之设置APP的名字、设置图标、添加等待加载时的图片
- IOS开发之xcode 4设置应用程序图标及加载图片
- RecyclerView的基本使用(优化图片加载、设置条目间距、设置Adapter、设置点击事件等)
- AS3跨域加载图片时设置LoaderContext类
- img加载错误设置默认图片
- Silverlight项目笔记7:xml/json数据解析、TreeView、引用类型与数据绑定错误、图片加载、虚拟目录设置、silverlight安全机制引发的问题、WebClient缓存问题
- Android设置Notification从网络中加载图片,解决点击无法消失的bug
- xutils加载图片设置示例
- fresco用布局设置圆角图片,加载前的显示图片,等各种设置
- Listview 设置两列异步加载网络图片,结果出现图片显示错位
- 给ImageView设置标记,实现加载图片
- (Andr 4000 oid学习)ImageView设置异步加载的网络图片
- Retrofit+RxJava+OkHttp封装类请求接口数据→原生登录,注册,个人信息页+设置用户头像(图片上传或拍照)+SharedPreferences保存信息+Fresco加载图片+Mvp分层
- 设置Image控件加载图片完毕后的效果.
- 用Xutils 加载网络图片。设置Appliction
- 页面加载的时候,设置图片的长度、宽度分别为浏览器的长度宽度
- Android图片加载神器之Fresco-更灵活的设置加载特效[Java代码实现XML效果]
- ListView设置快速滑动时不加载图片