动态获取网页数据,今天感觉到经历了无与伦比的绝望来一次记录一下自己的心情,并且写了源码希望大家跳过这个坑
这是middlewares.py文件里的代码来请求动态数据并返回给spider文件
class SeleniumSpiderMiddlewares(object):
#在middlewares.py文件里面插入请求自定义的
def __init__(self):
self.driver=webdriver.PhantomJS()
def process_request(self,request,spider):
# 当引擎从调度器中取出request进行请求发送下载器之前
# 会先执行当前的爬虫中间件 ,在中间件里面使用selenium
# 请求这个request ,拿到动态网站的数据 然后将请求
# 返回给spider爬虫对象
if spider.name=='tao':
# 使用爬虫文件的url地址
spider.driver.get(request.url)
for x in range(1,24,2):
i=float(x)/24
# scrollTop 从上往下的滑动距离
js='document.body.scrollTop=document.body.srcollHeight *% f'% i
spider.driver.execute_script(js)
# 设置响应信息
# 响应的url为请求的url
# 响应的网页内容为请求网页的源码
# 响应的编码为u