爬取金山翻译时希望可以获取例句,但是用xpath获取一直是空,开始以为是我写的xpath代码有问题,写了个关于xpath的使用记录(极其简单的记录),后来获取全部代码我才发现,没有关于句子的东西,只有一串看不懂 的代码百度后才发现这是js,需要加载一些解析js的东西才能解析出来显示,在这里做个记录,在scrapy里怎么解析js代码
这个文件是setting.py
'''
add a js'explaner to get the html same to our browser
添加一个js解释器,让我们得到的源码和浏览器一样
'''
DOWNLOADER_MIDDLEWARES = {
'jinshan.middlewares.JinshanDownloaderMiddleware': 543,
'companyinfo.middlewares.JavaScriptMiddleware': 543,
}
除此之外还要在middlewares中添加如下类
class JavaScriptMiddleware(object):
def process_request(self, request, spider):
# executable_path = '/home/hadoop/crawlcompanyinfo0906/phantomjs'
print "PhantomJS is starting..."
# driver = webdriver.PhantomJS(executable_path) # 指定使用的浏览器
driver = webdriver.Firefox()
driver.get(request.url)
time.sleep(1)
js = "var q=document.documentElement.scrollTop=10000"
driver.execute_script(js) # 可执行js,模仿用户操作。此处为将页面拉至最底端。
time.sleep(3)
body = driver.page_source
print ("访问" + request.url)
return HtmlResponse(driver.current_url, body=body, encoding='utf-8', request=request)
这样就可以解析js了
如果还是不行的话,可以看帖子https://blog.csdn.net/dechaowu/article/details/77883631
在GitHub中的软件连接在这里
https://github.com/mozilla/geckodriver/releases